diff --git a/.gradle/7.4/checksums/checksums.lock b/.gradle/7.4/checksums/checksums.lock index 8fdc09d..7db5587 100644 Binary files a/.gradle/7.4/checksums/checksums.lock and b/.gradle/7.4/checksums/checksums.lock differ diff --git a/.gradle/7.4/dependencies-accessors/dependencies-accessors.lock b/.gradle/7.4/dependencies-accessors/dependencies-accessors.lock index 3497c3a..3584a88 100644 Binary files a/.gradle/7.4/dependencies-accessors/dependencies-accessors.lock and b/.gradle/7.4/dependencies-accessors/dependencies-accessors.lock differ diff --git a/.gradle/7.4/executionHistory/executionHistory.bin b/.gradle/7.4/executionHistory/executionHistory.bin index 028c4b3..131559f 100644 Binary files a/.gradle/7.4/executionHistory/executionHistory.bin and b/.gradle/7.4/executionHistory/executionHistory.bin differ diff --git a/.gradle/7.4/executionHistory/executionHistory.lock b/.gradle/7.4/executionHistory/executionHistory.lock index 5542c87..02c9182 100644 Binary files a/.gradle/7.4/executionHistory/executionHistory.lock and b/.gradle/7.4/executionHistory/executionHistory.lock differ diff --git a/.gradle/7.4/fileHashes/fileHashes.bin b/.gradle/7.4/fileHashes/fileHashes.bin index 900ca95..73df5bf 100644 Binary files a/.gradle/7.4/fileHashes/fileHashes.bin and b/.gradle/7.4/fileHashes/fileHashes.bin differ diff --git a/.gradle/7.4/fileHashes/fileHashes.lock b/.gradle/7.4/fileHashes/fileHashes.lock index 16eb7ac..caba861 100644 Binary files a/.gradle/7.4/fileHashes/fileHashes.lock and b/.gradle/7.4/fileHashes/fileHashes.lock differ diff --git a/.gradle/7.4/fileHashes/resourceHashesCache.bin b/.gradle/7.4/fileHashes/resourceHashesCache.bin index f20715b..129f650 100644 Binary files a/.gradle/7.4/fileHashes/resourceHashesCache.bin and b/.gradle/7.4/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 9aad399..163d9fa 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/LICENSE b/LICENSE index 2071b23..2986042 100644 --- a/LICENSE +++ b/LICENSE @@ -2,7 +2,7 @@ MIT License Copyright (c) <year> <copyright holders> -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without IRestriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. diff --git a/docs/allclasses-index.html b/docs/allclasses-index.html index 4389298..b13cfa7 100644 --- a/docs/allclasses-index.html +++ b/docs/allclasses-index.html @@ -68,7 +68,7 @@ loadScripts(document, 'script');</script> <div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div> <div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="eu/mhsl/minenet/minigames/world/generator/BlockPallet.html" title="enum class in eu.mhsl.minenet.minigames.world.generator">BlockPallet</a></div> <div class="col-last odd-row-color all-classes-table all-classes-table-tab3"> </div> -<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.options">BoolOption</a></div> +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.common">BoolOption</a></div> <div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div> <div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="eu/mhsl/minenet/minigames/server/provider/ByPlayerNameUuidProvider.html" title="class in eu.mhsl.minenet.minigames.server.provider">ByPlayerNameUuidProvider</a></div> <div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div> @@ -160,7 +160,7 @@ loadScripts(document, 'script');</script> <div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div> <div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="eu/mhsl/minenet/minigames/message/component/NamespacedTranslatable.html" title="class in eu.mhsl.minenet.minigames.message.component">NamespacedTranslatable</a></div> <div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div> -<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.options">NumericOption</a></div> +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.common">NumericOption</a></div> <div class="col-last odd-row-color all-classes-table all-classes-table-tab2"> </div> <div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/Option.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config">Option</a><<a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/Option.html" title="type parameter in Option">T</a>></div> <div class="col-last even-row-color all-classes-table all-classes-table-tab2"> </div> diff --git a/docs/allpackages-index.html b/docs/allpackages-index.html index 7c43cbe..72a7550 100644 --- a/docs/allpackages-index.html +++ b/docs/allpackages-index.html @@ -74,7 +74,7 @@ loadScripts(document, 'script');</script> <div class="col-last even-row-color"> </div> <div class="col-first odd-row-color"><a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config</a></div> <div class="col-last odd-row-color"> </div> -<div class="col-first even-row-color"><a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.options</a></div> +<div class="col-first even-row-color"><a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.common</a></div> <div class="col-last even-row-color"> </div> <div class="col-first odd-row-color"><a href="eu/mhsl/minenet/minigames/instance/game/minigame/types/deathcube/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.types.deathcube</a></div> <div class="col-last odd-row-color"> </div> diff --git a/docs/element-list b/docs/element-list index 9fd784a..7192909 100644 --- a/docs/element-list +++ b/docs/element-list @@ -8,7 +8,7 @@ eu.mhsl.minenet.minigames.instance eu.mhsl.minenet.minigames.instance.game eu.mhsl.minenet.minigames.instance.game.minigame eu.mhsl.minenet.minigames.instance.game.minigame.config -eu.mhsl.minenet.minigames.instance.game.minigame.config.options +eu.mhsl.minenet.minigames.instance.game.minigame.config.common eu.mhsl.minenet.minigames.instance.game.minigame.types.deathcube eu.mhsl.minenet.minigames.instance.game.minigame.types.minerun eu.mhsl.minenet.minigames.instance.game.minigame.types.stickfight diff --git a/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/Option.html b/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/Option.html index 9f97f42..8239d6e 100644 --- a/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/Option.html +++ b/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/Option.html @@ -77,7 +77,7 @@ loadScripts(document, 'script');</script> <section class="class-description" id="class-description"> <dl class="notes"> <dt>Direct Known Subclasses:</dt> -<dd><code><a href="options/BoolOption.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.options">BoolOption</a></code>, <code><a href="options/NumericOption.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.options">NumericOption</a></code></dd> +<dd><code><a href="options/BoolOption.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.common">BoolOption</a></code>, <code><a href="options/NumericOption.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.common">NumericOption</a></code></dd> </dl> <hr> <div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">Option<T></span> diff --git a/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.html b/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.html index 402cfda..fd1682b 100644 --- a/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.html +++ b/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.html @@ -6,7 +6,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="dc.created" content="2022-09-18"> -<meta name="description" content="declaration: package: eu.mhsl.minenet.minigames.instance.game.minigame.config.options, class: BoolOption"> +<meta name="description" content="declaration: package: eu.mhsl.minenet.minigames.instance.game.minigame.config.common, class: BoolOption"> <meta name="generator" content="javadoc/ClassWriterImpl"> <link rel="stylesheet" type="text/css" href="../../../../../../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../../../../../../script-dir/jquery-ui.min.css" title="Style"> @@ -64,12 +64,12 @@ loadScripts(document, 'script');</script> <main role="main"> <!-- ======== START OF CLASS DATA ======== --> <div class="header"> -<div class="sub-title"><span class="package-label-in-type">Package</span> <a href="package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.options</a></div> +<div class="sub-title"><span class="package-label-in-type">Package</span> <a href="package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.common</a></div> <h1 title="Class BoolOption" class="title">Class BoolOption</h1> </div> <div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a> <div class="inheritance"><a href="../Option.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config">eu.mhsl.minenet.minigames.instance.game.minigame.config.Option</a><<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Boolean.html" title="class or interface in java.lang" class="external-link">Boolean</a>> -<div class="inheritance">eu.mhsl.minenet.minigames.instance.game.minigame.config.options.BoolOption</div> +<div class="inheritance">eu.mhsl.minenet.minigames.instance.game.minigame.config.common.BoolOption</div> </div> </div> <section class="class-description" id="class-description"> diff --git a/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.html b/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.html index f5c39ef..18c2968 100644 --- a/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.html +++ b/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.html @@ -6,7 +6,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="dc.created" content="2022-09-18"> -<meta name="description" content="declaration: package: eu.mhsl.minenet.minigames.instance.game.minigame.config.options, class: NumericOption"> +<meta name="description" content="declaration: package: eu.mhsl.minenet.minigames.instance.game.minigame.config.common, class: NumericOption"> <meta name="generator" content="javadoc/ClassWriterImpl"> <link rel="stylesheet" type="text/css" href="../../../../../../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../../../../../../script-dir/jquery-ui.min.css" title="Style"> @@ -64,12 +64,12 @@ loadScripts(document, 'script');</script> <main role="main"> <!-- ======== START OF CLASS DATA ======== --> <div class="header"> -<div class="sub-title"><span class="package-label-in-type">Package</span> <a href="package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.options</a></div> +<div class="sub-title"><span class="package-label-in-type">Package</span> <a href="package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.common</a></div> <h1 title="Class NumericOption" class="title">Class NumericOption</h1> </div> <div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a> <div class="inheritance"><a href="../Option.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config">eu.mhsl.minenet.minigames.instance.game.minigame.config.Option</a><<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>> -<div class="inheritance">eu.mhsl.minenet.minigames.instance.game.minigame.config.options.NumericOption</div> +<div class="inheritance">eu.mhsl.minenet.minigames.instance.game.minigame.config.common.NumericOption</div> </div> </div> <section class="class-description" id="class-description"> diff --git a/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-summary.html b/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-summary.html index 10bd6a9..f4b08b8 100644 --- a/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-summary.html +++ b/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-summary.html @@ -2,11 +2,11 @@ <html lang="de"> <head> <!-- Generated by javadoc (17) on Sun Sep 18 22:55:36 CEST 2022 --> -<title>eu.mhsl.minenet.minigames.instance.game.minigame.config.options</title> +<title>eu.mhsl.minenet.minigames.instance.game.minigame.config.common</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="dc.created" content="2022-09-18"> -<meta name="description" content="declaration: package: eu.mhsl.minenet.minigames.instance.game.minigame.config.options"> +<meta name="description" content="declaration: package: eu.mhsl.minenet.minigames.instance.game.minigame.config.common"> <meta name="generator" content="javadoc/PackageWriterImpl"> <link rel="stylesheet" type="text/css" href="../../../../../../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../../../../../../script-dir/jquery-ui.min.css" title="Style"> @@ -56,10 +56,11 @@ loadScripts(document, 'script');</script> <div class="flex-content"> <main role="main"> <div class="header"> -<h1 title="Package eu.mhsl.minenet.minigames.instance.game.minigame.config.options" class="title">Package eu.mhsl.minenet.minigames.instance.game.minigame.config.options</h1> +<h1 title="Package eu.mhsl.minenet.minigames.instance.game.minigame.config.common" class="title">Package + eu.mhsl.minenet.minigames.instance.game.minigame.config.common</h1> </div> <hr> -<div class="package-signature">package <span class="element-name">eu.mhsl.minenet.minigames.instance.game.minigame.config.options</span></div> +<div class="package-signature">package <span class="element-name">eu.mhsl.minenet.minigames.instance.game.minigame.config.common</span></div> <section class="summary"> <ul class="summary-list"> <li> @@ -79,9 +80,9 @@ loadScripts(document, 'script');</script> <div class="summary-table two-column-summary"> <div class="table-header col-first">Class</div> <div class="table-header col-last">Description</div> -<div class="col-first even-row-color class-summary class-summary-tab2"><a href="BoolOption.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.options">BoolOption</a></div> +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="BoolOption.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.common">BoolOption</a></div> <div class="col-last even-row-color class-summary class-summary-tab2"> </div> -<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="NumericOption.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.options">NumericOption</a></div> +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="NumericOption.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.common">NumericOption</a></div> <div class="col-last odd-row-color class-summary class-summary-tab2"> </div> </div> </div> diff --git a/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-tree.html b/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-tree.html index a0347de..ee8088b 100644 --- a/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-tree.html +++ b/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-tree.html @@ -2,11 +2,11 @@ <html lang="de"> <head> <!-- Generated by javadoc (17) on Sun Sep 18 22:55:36 CEST 2022 --> -<title>eu.mhsl.minenet.minigames.instance.game.minigame.config.options Class Hierarchy</title> +<title>eu.mhsl.minenet.minigames.instance.game.minigame.config.common Class Hierarchy</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="dc.created" content="2022-09-18"> -<meta name="description" content="tree: package: eu.mhsl.minenet.minigames.instance.game.minigame.config.options"> +<meta name="description" content="tree: package: eu.mhsl.minenet.minigames.instance.game.minigame.config.common"> <meta name="generator" content="javadoc/PackageTreeWriter"> <link rel="stylesheet" type="text/css" href="../../../../../../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../../../../../../script-dir/jquery-ui.min.css" title="Style"> @@ -48,7 +48,7 @@ loadScripts(document, 'script');</script> <div class="flex-content"> <main role="main"> <div class="header"> -<h1 class="title">Hierarchy For Package eu.mhsl.minenet.minigames.instance.game.minigame.config.options</h1> +<h1 class="title">Hierarchy For Package eu.mhsl.minenet.minigames.instance.game.minigame.config.common</h1> <span class="package-hierarchy-label">Package Hierarchies:</span> <ul class="horizontal"> <li><a href="../../../../../../../../../overview-tree.html">All Packages</a></li> @@ -61,8 +61,8 @@ loadScripts(document, 'script');</script> <ul> <li class="circle">eu.mhsl.minenet.minigames.instance.game.minigame.config.<a href="../Option.html" class="type-name-link" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config">Option</a><T> <ul> -<li class="circle">eu.mhsl.minenet.minigames.instance.game.minigame.config.options.<a href="BoolOption.html" class="type-name-link" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.options">BoolOption</a></li> -<li class="circle">eu.mhsl.minenet.minigames.instance.game.minigame.config.options.<a href="NumericOption.html" class="type-name-link" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.options">NumericOption</a></li> +<li class="circle">eu.mhsl.minenet.minigames.instance.game.minigame.config.common.<a href="BoolOption.html" class="type-name-link" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.common">BoolOption</a></li> +<li class="circle">eu.mhsl.minenet.minigames.instance.game.minigame.config.common.<a href="NumericOption.html" class="type-name-link" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.common">NumericOption</a></li> </ul> </li> </ul> diff --git a/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/package-summary.html b/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/package-summary.html index dc8583a..bf714ae 100644 --- a/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/package-summary.html +++ b/docs/eu/mhsl/minenet/minigames/instance/game/minigame/config/package-summary.html @@ -74,7 +74,7 @@ loadScripts(document, 'script');</script> <div class="table-header col-last">Description</div> <div class="col-first even-row-color"><a href="../package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame</a></div> <div class="col-last even-row-color"> </div> -<div class="col-first odd-row-color"><a href="options/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.options</a></div> +<div class="col-first odd-row-color"><a href="options/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.common</a></div> <div class="col-last odd-row-color"> </div> </div> </div> diff --git a/docs/index-files/index-13.html b/docs/index-files/index-13.html index a82e8c6..8cf7578 100644 --- a/docs/index-files/index-13.html +++ b/docs/index-files/index-13.html @@ -71,9 +71,9 @@ loadScripts(document, 'script');</script> <dd> </dd> <dt><a href="../eu/mhsl/minenet/minigames/message/TranslatableMessage.html#newLine()" class="member-name-link">newLine()</a> - Method in class eu.mhsl.minenet.minigames.message.<a href="../eu/mhsl/minenet/minigames/message/TranslatableMessage.html" title="class in eu.mhsl.minenet.minigames.message">TranslatableMessage</a></dt> <dd> </dd> -<dt><a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.html" class="type-name-link" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.options">NumericOption</a> - Class in <a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.options</a></dt> +<dt><a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.html" class="type-name-link" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.common">NumericOption</a> - Class in <a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.common</a></dt> <dd> </dd> -<dt><a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.html#%3Cinit%3E(java.lang.String,net.minestom.server.item.Material,java.lang.String,java.lang.Integer...)" class="member-name-link">NumericOption(String, Material, String, Integer...)</a> - Constructor for class eu.mhsl.minenet.minigames.instance.game.minigame.config.options.<a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.options">NumericOption</a></dt> +<dt><a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.html#%3Cinit%3E(java.lang.String,net.minestom.server.item.Material,java.lang.String,java.lang.Integer...)" class="member-name-link">NumericOption(String, Material, String, Integer...)</a> - Constructor for class eu.mhsl.minenet.minigames.instance.game.minigame.config.common.<a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.common">NumericOption</a></dt> <dd> </dd> </dl> <a href="index-1.html">A</a> <a href="index-2.html">B</a> <a href="index-3.html">C</a> <a href="index-4.html">D</a> <a href="index-5.html">E</a> <a href="index-6.html">F</a> <a href="index-7.html">G</a> <a href="index-8.html">H</a> <a href="index-9.html">I</a> <a href="index-10.html">J</a> <a href="index-11.html">L</a> <a href="index-12.html">M</a> <a href="index-13.html">N</a> <a href="index-14.html">O</a> <a href="index-15.html">P</a> <a href="index-16.html">Q</a> <a href="index-17.html">R</a> <a href="index-18.html">S</a> <a href="index-19.html">T</a> <a href="index-20.html">U</a> <a href="index-21.html">V</a> <a href="index-22.html">W</a> <br><a href="../allclasses-index.html">All Classes and Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant Field Values</a></main> diff --git a/docs/index-files/index-2.html b/docs/index-files/index-2.html index 62b7258..fdaa6af 100644 --- a/docs/index-files/index-2.html +++ b/docs/index-files/index-2.html @@ -59,9 +59,9 @@ loadScripts(document, 'script');</script> <dd> </dd> <dt><a href="../eu/mhsl/minenet/minigames/world/generator/BlockPallet.html" class="type-name-link" title="enum class in eu.mhsl.minenet.minigames.world.generator">BlockPallet</a> - Enum Class in <a href="../eu/mhsl/minenet/minigames/world/generator/package-summary.html">eu.mhsl.minenet.minigames.world.generator</a></dt> <dd> </dd> -<dt><a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.html" class="type-name-link" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.options">BoolOption</a> - Class in <a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.options</a></dt> +<dt><a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.html" class="type-name-link" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.common">BoolOption</a> - Class in <a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.common</a></dt> <dd> </dd> -<dt><a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.html#%3Cinit%3E(java.lang.String,net.minestom.server.item.Material,java.lang.String)" class="member-name-link">BoolOption(String, Material, String)</a> - Constructor for class eu.mhsl.minenet.minigames.instance.game.minigame.config.options.<a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.options">BoolOption</a></dt> +<dt><a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.html#%3Cinit%3E(java.lang.String,net.minestom.server.item.Material,java.lang.String)" class="member-name-link">BoolOption(String, Material, String)</a> - Constructor for class eu.mhsl.minenet.minigames.instance.game.minigame.config.common.<a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.html" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.common">BoolOption</a></dt> <dd> </dd> <dt><a href="../eu/mhsl/minenet/minigames/message/TranslatableMessage.html#build(net.minestom.server.entity.Player)" class="member-name-link">build(Player)</a> - Method in class eu.mhsl.minenet.minigames.message.<a href="../eu/mhsl/minenet/minigames/message/TranslatableMessage.html" title="class in eu.mhsl.minenet.minigames.message">TranslatableMessage</a></dt> <dd> </dd> diff --git a/docs/index-files/index-5.html b/docs/index-files/index-5.html index 2dcabba..f46f204 100644 --- a/docs/index-files/index-5.html +++ b/docs/index-files/index-5.html @@ -75,7 +75,7 @@ loadScripts(document, 'script');</script> <dd> </dd> <dt><a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config</a> - package eu.mhsl.minenet.minigames.instance.game.minigame.config</dt> <dd> </dd> -<dt><a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.options</a> - package eu.mhsl.minenet.minigames.instance.game.minigame.config.options</dt> +<dt><a href="../eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.common</a> - package eu.mhsl.minenet.minigames.instance.game.minigame.config.common</dt> <dd> </dd> <dt><a href="../eu/mhsl/minenet/minigames/instance/game/minigame/types/deathcube/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.types.deathcube</a> - package eu.mhsl.minenet.minigames.instance.game.minigame.types.deathcube</dt> <dd> </dd> diff --git a/docs/index.html b/docs/index.html index 09f5ced..b14592e 100644 --- a/docs/index.html +++ b/docs/index.html @@ -72,7 +72,7 @@ loadScripts(document, 'script');</script> <div class="col-last even-row-color all-packages-table all-packages-table-tab1"> </div> <div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config</a></div> <div class="col-last odd-row-color all-packages-table all-packages-table-tab1"> </div> -<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.options</a></div> +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.common</a></div> <div class="col-last even-row-color all-packages-table all-packages-table-tab1"> </div> <div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="eu/mhsl/minenet/minigames/instance/game/minigame/types/deathcube/package-summary.html">eu.mhsl.minenet.minigames.instance.game.minigame.types.deathcube</a></div> <div class="col-last odd-row-color all-packages-table all-packages-table-tab1"> </div> diff --git a/docs/legal/jquery.md b/docs/legal/jquery.md index 8054a34..bd3dbbd 100644 --- a/docs/legal/jquery.md +++ b/docs/legal/jquery.md @@ -7,7 +7,7 @@ Copyright JS Foundation and other contributors, https://js.foundation/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including +"Software"), to deal in the Software without IRestriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to @@ -43,7 +43,7 @@ documented below: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including +"Software"), to deal in the Software without IRestriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to diff --git a/docs/legal/jqueryUI.md b/docs/legal/jqueryUI.md index 8031bdb..34a678d 100644 --- a/docs/legal/jqueryUI.md +++ b/docs/legal/jqueryUI.md @@ -15,7 +15,7 @@ documented below: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including +"Software"), to deal in the Software without IRestriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to diff --git a/docs/overview-tree.html b/docs/overview-tree.html index 92da465..32220fd 100644 --- a/docs/overview-tree.html +++ b/docs/overview-tree.html @@ -61,7 +61,7 @@ loadScripts(document, 'script');</script> <li><a href="eu/mhsl/minenet/minigames/instance/game/package-tree.html">eu.mhsl.minenet.minigames.instance.game</a>, </li> <li><a href="eu/mhsl/minenet/minigames/instance/game/minigame/package-tree.html">eu.mhsl.minenet.minigames.instance.game.minigame</a>, </li> <li><a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/package-tree.html">eu.mhsl.minenet.minigames.instance.game.minigame.config</a>, </li> -<li><a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-tree.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.options</a>, </li> +<li><a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/options/package-tree.html">eu.mhsl.minenet.minigames.instance.game.minigame.config.common</a>, </li> <li><a href="eu/mhsl/minenet/minigames/instance/game/minigame/types/deathcube/package-tree.html">eu.mhsl.minenet.minigames.instance.game.minigame.types.deathcube</a>, </li> <li><a href="eu/mhsl/minenet/minigames/instance/game/minigame/types/minerun/package-tree.html">eu.mhsl.minenet.minigames.instance.game.minigame.types.minerun</a>, </li> <li><a href="eu/mhsl/minenet/minigames/instance/game/minigame/types/stickfight/package-tree.html">eu.mhsl.minenet.minigames.instance.game.minigame.types.stickfight</a>, </li> @@ -189,8 +189,8 @@ loadScripts(document, 'script');</script> <li class="circle">eu.mhsl.minenet.minigames.message.component.<a href="eu/mhsl/minenet/minigames/message/component/NamespacedTranslatable.html" class="type-name-link" title="class in eu.mhsl.minenet.minigames.message.component">NamespacedTranslatable</a></li> <li class="circle">eu.mhsl.minenet.minigames.instance.game.minigame.config.<a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/Option.html" class="type-name-link" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config">Option</a><T> <ul> -<li class="circle">eu.mhsl.minenet.minigames.instance.game.minigame.config.options.<a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.html" class="type-name-link" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.options">BoolOption</a></li> -<li class="circle">eu.mhsl.minenet.minigames.instance.game.minigame.config.options.<a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.html" class="type-name-link" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.options">NumericOption</a></li> +<li class="circle">eu.mhsl.minenet.minigames.instance.game.minigame.config.common.<a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.html" class="type-name-link" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.common">BoolOption</a></li> +<li class="circle">eu.mhsl.minenet.minigames.instance.game.minigame.config.common.<a href="eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.html" class="type-name-link" title="class in eu.mhsl.minenet.minigames.instance.game.minigame.config.common">NumericOption</a></li> </ul> </li> <li class="circle">eu.mhsl.minenet.minigames.world.generator.<a href="eu/mhsl/minenet/minigames/world/generator/PlaneGenerator.html" class="type-name-link" title="class in eu.mhsl.minenet.minigames.world.generator">PlaneGenerator</a> (implements net.minestom.server.instance.generator.Generator)</li> diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/Game.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/Game.java index e1144f0..57382bb 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/Game.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/Game.java @@ -1,6 +1,7 @@ package eu.mhsl.minenet.minigames.instance.game; import eu.mhsl.minenet.minigames.instance.MineNetInstance; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.GameFactory; import eu.mhsl.minenet.minigames.util.CommonEventHandles; import eu.mhsl.minenet.minigames.instance.Spawnable; import eu.mhsl.minenet.minigames.instance.room.Room; @@ -50,6 +51,13 @@ public abstract class Game extends MineNetInstance implements Spawnable { .addListener(ItemDropEvent.class, this::onItemDrop); } + public static Game initialize(GameFactory factory, Player owner) { + Game game = factory.manufacture(factory.configuration() != null ? factory.configuration().getAll() : null); + Room.getRoom(owner).moveMembersToGame(game); + game.load(); + return game; + } + /** * Load and start countdown */ diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/GameConfigurationInventory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/GameConfigurationInventory.java index c79f21e..b0d34f3 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/GameConfigurationInventory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/GameConfigurationInventory.java @@ -1,26 +1,46 @@ package eu.mhsl.minenet.minigames.instance.game.minigame.config; import eu.mhsl.minenet.minigames.instance.game.Game; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.IRestriction; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.Restriction; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.RestrictionData; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.RestrictionHandler; import eu.mhsl.minenet.minigames.shared.inventory.InteractableInventory; import eu.mhsl.minenet.minigames.util.TextUtil; import eu.mhsl.minenet.minigames.instance.room.Room; +import net.kyori.adventure.sound.Sound; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.minestom.server.entity.Player; +import net.minestom.server.event.instance.AddEntityToInstanceEvent; import net.minestom.server.inventory.InventoryType; import net.minestom.server.inventory.click.ClickType; import net.minestom.server.inventory.condition.InventoryConditionResult; import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; +import net.minestom.server.sound.SoundEvent; import java.util.HashMap; import java.util.Map; +import java.util.stream.Collectors; public class GameConfigurationInventory extends InteractableInventory { private final Map<Integer, Option<?>> map = new HashMap<>(); - public GameConfigurationInventory(GameFactory factory) { + final private Room room; + final private GameFactory factory; + + public GameConfigurationInventory(Room room, GameFactory factory) { super(InventoryType.CHEST_5_ROW, factory.name()); + this.room = room; + this.factory = factory; + + room.eventNode() + .addListener(AddEntityToInstanceEvent.class, addEntityToInstanceEvent -> { + System.out.println("UPDATE"); + updatePlayButton(); + }); + ConfigManager config = factory.configuration(); setClickableItem( @@ -39,20 +59,7 @@ public class GameConfigurationInventory extends InteractableInventory { setDummyItem(Material.BLACK_STAINED_GLASS_PANE,7); - setClickableItem( - ItemStack.builder(Material.GREEN_WOOL).displayName(Component.text("Start", NamedTextColor.GREEN)).build(), - 8, - itemClick -> { - try { - Game game = factory.manufacture(config != null ? config.getAll() : null); - Room.getRoom(itemClick.getPlayer()).moveMembersToGame(game); - game.load(); - } catch (Exception e) { - e.printStackTrace(); - } - }, - true - ); + updatePlayButton(); for(int i = 9; i <= 17; i++) { setDummyItem(Material.BLACK_STAINED_GLASS_PANE, i); @@ -92,4 +99,44 @@ public class GameConfigurationInventory extends InteractableInventory { update(); } + + private void updatePlayButton() { + RestrictionHandler restrictionHandler = factory.globalRestrictions(); + RestrictionData restrictionData = new RestrictionData(room); + + if(restrictionHandler.canPlay(restrictionData)) { + + setClickableItem( + ItemStack.builder(restrictionHandler.getWarnings(restrictionData).size() > 0 ? Material.YELLOW_WOOL : Material.GREEN_WOOL) + .displayName(Component.text("Start", NamedTextColor.GREEN)) + .lore(restrictionHandler.getWarnings(restrictionData).stream().map(Component::text).collect(Collectors.toList())) + .build(), + 8, + itemClick -> { + Game.initialize(factory, itemClick.getPlayer()); + }, + true + ); + + } else { + + setClickableItem( + ItemStack.builder(Material.RED_WOOL) + .displayName(Component.text("Bedinungen nicht erfült", NamedTextColor.RED)) + .lore( + restrictionHandler.getRestrictions() + .stream() + .filter(iRestriction -> iRestriction.calculate(restrictionData).getType().equals(Restriction.Type.FAIL)) + .map(iRestriction -> Component.text(iRestriction.calculate(restrictionData).getName())) + .collect(Collectors.toList())) + .build(), + 8, + itemClick -> { + itemClick.getPlayer().playSound(Sound.sound(SoundEvent.ENTITY_SILVERFISH_DEATH, Sound.Source.AMBIENT, 1f, 1f)); + }, + false + ); + + } + } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/GameFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/GameFactory.java index 6a37594..1794bd9 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/GameFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/GameFactory.java @@ -1,6 +1,7 @@ package eu.mhsl.minenet.minigames.instance.game.minigame.config; import eu.mhsl.minenet.minigames.instance.game.minigame.Minigame; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.RestrictionHandler; import net.kyori.adventure.text.Component; import net.minestom.server.instance.block.Block; import net.minestom.server.item.Material; @@ -12,23 +13,31 @@ import java.util.Map; public interface GameFactory { Component name(); ConfigManager configuration(); + default RestrictionHandler globalRestrictions() { + return new RestrictionHandler(); + } default Material symbol() { return Material.GRASS_BLOCK; - }; + } default Component description() { return Component.text("- Keine Beschreibung -"); - }; + } Minigame manufacture(Map<String, Option<?>> configuration); + default Minigame manufacture(List<Option<?>> configuration) { if(configuration == null) return manufacture(); + Map<String, Option<?>> cnf = new HashMap<>(); configuration.forEach(option -> cnf.put(option.getId(), option)); + return manufacture(cnf); } + default Minigame manufacture() { if(this.configuration() == null) return manufacture(List.of()); + return manufacture(this.configuration().getAll()); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/Option.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/Option.java index c24aec8..f2bc45e 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/Option.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/Option.java @@ -1,5 +1,6 @@ package eu.mhsl.minenet.minigames.instance.game.minigame.config; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.RestrictionHandler; import net.kyori.adventure.text.Component; import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; @@ -7,10 +8,10 @@ import net.minestom.server.item.Material; import java.util.List; public abstract class Option<T> { + private RestrictionHandler restrictionHandler; private final Material item; private final String name; private final String id; - protected T currentValue; private final List<T> options; private int pointer = 0; @@ -24,6 +25,15 @@ public abstract class Option<T> { currentValue = options.get(0); } + public void setRestrictionHandler(RestrictionHandler restrictionHandler) { + this.restrictionHandler = restrictionHandler; + } + + public RestrictionHandler getRestrictionHandler() { + return restrictionHandler; + } + + public ItemStack getNext() { if(++pointer >= options.size()) pointer = 0; currentValue = options.get(pointer); diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/common/BoolOption.java similarity index 97% rename from src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.java rename to src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/common/BoolOption.java index eb8b65b..b67a9c1 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/BoolOption.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/common/BoolOption.java @@ -1,4 +1,4 @@ -package eu.mhsl.minenet.minigames.instance.game.minigame.config.options; +package eu.mhsl.minenet.minigames.instance.game.minigame.config.common; import eu.mhsl.minenet.minigames.instance.game.minigame.config.Option; import net.minestom.server.item.Material; diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/common/NumericOption.java similarity index 79% rename from src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.java rename to src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/common/NumericOption.java index 847d6f5..3e2b6c6 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/options/NumericOption.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/common/NumericOption.java @@ -1,11 +1,13 @@ -package eu.mhsl.minenet.minigames.instance.game.minigame.config.options; +package eu.mhsl.minenet.minigames.instance.game.minigame.config.common; import eu.mhsl.minenet.minigames.instance.game.minigame.config.Option; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.RestrictionHandler; import net.minestom.server.item.Material; import java.util.List; public class NumericOption extends Option<Integer> { + public NumericOption(String id, Material item, String name, Integer... options) { super(id, item, name, List.of(options)); } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/IRestriction.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/IRestriction.java new file mode 100644 index 0000000..b51f2a7 --- /dev/null +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/IRestriction.java @@ -0,0 +1,6 @@ +package eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction; + + +public interface IRestriction { + Restriction calculate(RestrictionData data); +} diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/Restriction.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/Restriction.java new file mode 100644 index 0000000..f4a01ac --- /dev/null +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/Restriction.java @@ -0,0 +1,43 @@ +package eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction; + +public class Restriction { + final private String name; + final private String description; + final private String warnMessage; + + final private Type type; + + public Restriction(String name, String description, String warnMessage, Type type) { + this.name = name; + this.description = description; + this.warnMessage = warnMessage; + this.type = type; + + if(this.warnMessage == null && this.type.equals(Type.WARN)) { + throw new IllegalStateException("warnMessage cannot be null when RestrictionType is WARN"); + } + } + + public String getName() { + return name; + } + + public String getDescription() { + return description; + } + + public String getWarnMessage() { + return warnMessage; + } + + public Type getType() { + return type; + } + + public enum Type { + OK, + WARN, + FAIL, + } +} + diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/RestrictionData.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/RestrictionData.java new file mode 100644 index 0000000..747347a --- /dev/null +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/RestrictionData.java @@ -0,0 +1,16 @@ +package eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction; + +import eu.mhsl.minenet.minigames.instance.MineNetInstance; +import eu.mhsl.minenet.minigames.instance.room.Room; + +public class RestrictionData { + final private Room instance; + + public RestrictionData(Room instance) { + this.instance = instance; + } + + public MineNetInstance getInstance() { + return instance; + } +} diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/RestrictionHandler.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/RestrictionHandler.java new file mode 100644 index 0000000..c9966b1 --- /dev/null +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/RestrictionHandler.java @@ -0,0 +1,42 @@ +package eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction; + +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.List; + +public class RestrictionHandler { + private List<IRestriction> restrictions = new ArrayList<>(); + + public RestrictionHandler(IRestriction... restrictions) { + this.restrictions = List.of(restrictions); + } + + public RestrictionHandler() { + + } + + public RestrictionHandler addRestriction(IRestriction IRestriction) { + this.restrictions.add(IRestriction); + return this; + } + + public List<IRestriction> getRestrictions() { + return restrictions; + } + + public boolean canPlay(RestrictionData data) { + return this.restrictions.stream() + .anyMatch(iRestriction -> !iRestriction.calculate(data).getType().equals(Restriction.Type.OK)); + } + + public List<String> getWarnings(RestrictionData data) { + List<String> warnings = new ArrayList<>(); + for (IRestriction r : this.restrictions) { + Restriction calculated = r.calculate(data); + if(!calculated.getType().equals(Restriction.Type.WARN)) continue; + + warnings.add(calculated.getWarnMessage()); + } + return warnings; + } +} diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/common/MaximalPlayeramountRestriction.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/common/MaximalPlayeramountRestriction.java new file mode 100644 index 0000000..cbf4d30 --- /dev/null +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/common/MaximalPlayeramountRestriction.java @@ -0,0 +1,24 @@ +package eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.common; + +import eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.IRestriction; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.Restriction; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.RestrictionData; +import kotlin.Result; + +public class MaximalPlayeramountRestriction implements IRestriction { + final private int max; + + public MaximalPlayeramountRestriction(int max) { + this.max = max; + } + + @Override + public Restriction calculate(RestrictionData data) { + return new Restriction( + "Maxplayers", + "Maximale spieleranzahl", + null, + data.getInstance().getPlayers().size() > this.max ? Restriction.Type.FAIL : Restriction.Type.OK + ); + } +} diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/common/MinimalPlayeramountRestriction.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/common/MinimalPlayeramountRestriction.java new file mode 100644 index 0000000..be69390 --- /dev/null +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/config/restriction/common/MinimalPlayeramountRestriction.java @@ -0,0 +1,23 @@ +package eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.common; + +import eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.IRestriction; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.Restriction; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.RestrictionData; + +public class MinimalPlayeramountRestriction implements IRestriction { + final int min; + + public MinimalPlayeramountRestriction(int min) { + this.min = min; + } + + @Override + public Restriction calculate(RestrictionData data) { + return new Restriction( + "Minimal players", + "Minimal amount of players needed", + null, + data.getInstance().getPlayers().size() < min ? Restriction.Type.FAIL : Restriction.Type.OK + ); + } +} diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/types/deathcube/DeathcubeFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/types/deathcube/DeathcubeFactory.java index f74e3cd..61a1797 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/types/deathcube/DeathcubeFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/types/deathcube/DeathcubeFactory.java @@ -4,7 +4,7 @@ import eu.mhsl.minenet.minigames.instance.game.minigame.Minigame; import eu.mhsl.minenet.minigames.instance.game.minigame.config.GameFactory; import eu.mhsl.minenet.minigames.instance.game.minigame.config.Option; import eu.mhsl.minenet.minigames.instance.game.minigame.config.ConfigManager; -import eu.mhsl.minenet.minigames.instance.game.minigame.config.options.NumericOption; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.common.NumericOption; import net.kyori.adventure.text.Component; import net.minestom.server.item.Material; diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/types/minerun/MinerunFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/types/minerun/MinerunFactory.java index 9966e5b..a63a17f 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/types/minerun/MinerunFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/types/minerun/MinerunFactory.java @@ -4,7 +4,7 @@ import eu.mhsl.minenet.minigames.instance.game.minigame.Minigame; import eu.mhsl.minenet.minigames.instance.game.minigame.config.ConfigManager; import eu.mhsl.minenet.minigames.instance.game.minigame.config.GameFactory; import eu.mhsl.minenet.minigames.instance.game.minigame.config.Option; -import eu.mhsl.minenet.minigames.instance.game.minigame.config.options.NumericOption; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.common.NumericOption; import net.kyori.adventure.text.Component; import net.minestom.server.item.Material; diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/types/stickfight/StickFightFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/types/stickfight/StickFightFactory.java index 2c8ad73..5824bf7 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/types/stickfight/StickFightFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/minigame/types/stickfight/StickFightFactory.java @@ -4,6 +4,9 @@ import eu.mhsl.minenet.minigames.instance.game.minigame.Minigame; import eu.mhsl.minenet.minigames.instance.game.minigame.config.ConfigManager; import eu.mhsl.minenet.minigames.instance.game.minigame.config.GameFactory; import eu.mhsl.minenet.minigames.instance.game.minigame.config.Option; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.RestrictionHandler; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.common.MaximalPlayeramountRestriction; +import eu.mhsl.minenet.minigames.instance.game.minigame.config.restriction.common.MinimalPlayeramountRestriction; import net.kyori.adventure.text.Component; import net.minestom.server.item.Material; @@ -20,6 +23,13 @@ public class StickFightFactory implements GameFactory { return null; } + @Override + public RestrictionHandler globalRestrictions() { + return new RestrictionHandler() + .addRestriction(new MinimalPlayeramountRestriction(2)) + .addRestriction(new MaximalPlayeramountRestriction(4)); + } + @Override public Minigame manufacture(Map<String, Option<?>> configuration) { return new Stickfight(); diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/room/entity/GameSelector.java b/src/main/java/eu/mhsl/minenet/minigames/instance/room/entity/GameSelector.java index 8fe952a..a3a0c5d 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/room/entity/GameSelector.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/room/entity/GameSelector.java @@ -44,6 +44,6 @@ public class GameSelector extends InteractableEntity { return; } - playerEntityInteractEvent.getPlayer().openInventory(new MinigameTypeSelectInventory()); + playerEntityInteractEvent.getPlayer().openInventory(new MinigameTypeSelectInventory(room)); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/room/inventory/MinigameTypeSelectInventory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/room/inventory/MinigameTypeSelectInventory.java index 41dba79..a09c026 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/room/inventory/MinigameTypeSelectInventory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/room/inventory/MinigameTypeSelectInventory.java @@ -4,6 +4,7 @@ import eu.mhsl.minenet.minigames.instance.game.GameList; import eu.mhsl.minenet.minigames.instance.game.GameType; import eu.mhsl.minenet.minigames.instance.game.minigame.config.GameConfigurationInventory; import eu.mhsl.minenet.minigames.instance.game.minigame.config.GameFactory; +import eu.mhsl.minenet.minigames.instance.room.Room; import eu.mhsl.minenet.minigames.shared.inventory.InteractableInventory; import net.kyori.adventure.text.Component; import net.minestom.server.inventory.InventoryType; @@ -12,8 +13,10 @@ import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; public class MinigameTypeSelectInventory extends InteractableInventory { - public MinigameTypeSelectInventory() { + final private Room room; + public MinigameTypeSelectInventory(Room room) { super(InventoryType.CHEST_6_ROW, Component.text("MineNet Servernetzwerk")); + this.room = room; int typeCount = 0; for (GameType type : GameType.values()) { @@ -54,7 +57,7 @@ public class MinigameTypeSelectInventory extends InteractableInventory { .meta(metaBuilder -> metaBuilder.hideFlag(ItemHideFlag.HIDE_ATTRIBUTES)) .build(), gameCount, - itemClick -> itemClick.getPlayer().openInventory(new GameConfigurationInventory(gameFactory)) + itemClick -> itemClick.getPlayer().openInventory(new GameConfigurationInventory(room, gameFactory)) ); gameCount++; } diff --git a/src/main/java/eu/mhsl/minenet/minigames/lang/Languages.java b/src/main/java/eu/mhsl/minenet/minigames/lang/Languages.java index 0c55836..b3e71b5 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/lang/Languages.java +++ b/src/main/java/eu/mhsl/minenet/minigames/lang/Languages.java @@ -105,4 +105,3 @@ public class Languages { } } } -