This is an automated email from the ASF dual-hosted git repository.
sergeykamov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git
The following commit(s) were added to refs/heads/master by this push:
new 4c03af4 Release scripts fixes. Minor refactoring.
4c03af4 is described below
commit 4c03af43b25b2bb4163fedfe31f70c1863ae9476
Author: Sergey Kamov <[email protected]>
AuthorDate: Tue Apr 27 19:34:40 2021 +0300
Release scripts fixes. Minor refactoring.
---
bin/MAVEN-RELEASE.md | 9 +
bin/prepare.sh | 117 ++++-
nlpcraft-examples/minecraft-mod/LICENSE.txt | 520 ---------------------
nlpcraft-examples/minecraft-mod/build.gradle | 4 +-
.../gradle/wrapper/gradle-wrapper.jar | Bin 54708 -> 59203 bytes
.../gradle/wrapper/gradle-wrapper.properties | 2 +-
nlpcraft-examples/minecraft-mod/gradlew | 53 ++-
nlpcraft-examples/minecraft-mod/gradlew.bat | 173 +++----
.../example/minecraft/NCMinecraftExampleMod.java | 14 +-
.../minecraft/utils/NCMinecraftFilesDump.java | 2 +-
.../minecraft/MinecraftFIllMatchProcessor.kt | 44 +-
.../nlpcraft/example/minecraft/MinecraftModel.kt | 34 +-
.../nlpcraft/example/minecraft/MinecraftUtils.kt | 54 ---
.../example/minecraft/MinecraftValueLoader.kt | 5 +
14 files changed, 305 insertions(+), 726 deletions(-)
diff --git a/bin/MAVEN-RELEASE.md b/bin/MAVEN-RELEASE.md
index 6777ef9..f0fa141 100644
--- a/bin/MAVEN-RELEASE.md
+++ b/bin/MAVEN-RELEASE.md
@@ -78,6 +78,15 @@ For example, if version is `0.5.0` and tag name is `v0.5.0`
following pom `scm`
The following `pom.xml` files should be updates:
- nlpcraft/pom.xml
- nlpcraft-stanford/pom.xml
+- nlpcraft-examples/alarm/pom.xml
+- nlpcraft-examples/echo/pom.xml
+- nlpcraft-examples/helloworld/pom.xml
+- nlpcraft-examples/lightswitch/pom.xml
+- nlpcraft-examples/minecraft/pom.xml
+- nlpcraft-examples/phone/pom.xml
+- nlpcraft-examples/sql/pom.xml
+- nlpcraft-examples/time/pom.xml
+- nlpcraft-examples/weather/pom.xml
- pom.xml
## 3. Make Maven Release
diff --git a/bin/prepare.sh b/bin/prepare.sh
index f667b2b..71e8bfa 100755
--- a/bin/prepare.sh
+++ b/bin/prepare.sh
@@ -16,6 +16,8 @@
# limitations under the License.
#
+# Make sure that maven and gradle installed on your PC.
+
if [[ $1 = "" ]] ; then
echo "Version must be set as input parameter."
exit 1
@@ -32,19 +34,46 @@ zipFileBin=apache-nlpcraft-incubating-bin-$1.zip # NOT an
official ASF release.
zipFileSrc=apache-nlpcraft-incubating-$1.zip # An OFFICIAL ASF release.
coreModule=nlpcraft
stanfordModule=nlpcraft-stanford
+examples=nlpcraft-examples
+exampleAlarm=${examples}/alarm
+exampleEcho=${examples}/echo
+exampleHelloworld=${examples}/helloworld
+exampleLightswitch=${examples}/lightswitch
+exampleMinecraft=${examples}/minecraft
+exampleMinecraftMod=${examples}/minecraft-mod
+examplePhone=${examples}/phone
+exampleSql=${examples}/sql
+exampleTime=${examples}/time
+exampleWeather=${examples}/weather
curDir=$(pwd)
cd ../
-mvn clean package -P stanford-corenlp,release
+mvn clean package -P stanford-corenlp,release,examples
+
+cd nlpcraft-examples/minecraft-mod || exit
+./gradlew clean build
+
+cd ../../
rm -R ${zipDir} 2> /dev/null
-mkdir ${zipDir}
-mkdir ${zipDir}/${tmpDir}
-mkdir ${zipDir}/${tmpDir}/${coreModule}
+mkdir -p ${zipDir}/${tmpDir}/${coreModule}
+mkdir -p ${zipDir}/${tmpDir}/${stanfordModule}
+mkdir -p ${zipDir}/${tmpDir}/${exampleAlarm}
+mkdir -p ${zipDir}/${tmpDir}/${exampleEcho}
+mkdir -p ${zipDir}/${tmpDir}/${exampleHelloworld}
+mkdir -p ${zipDir}/${tmpDir}/${exampleLightswitch}
+mkdir -p ${zipDir}/${tmpDir}/${exampleMinecraft}
+mkdir -p ${zipDir}/${tmpDir}/${exampleMinecraftMod}
+mkdir -p ${zipDir}/${tmpDir}/${examplePhone}
+mkdir -p ${zipDir}/${tmpDir}/${exampleSql}
+mkdir -p ${zipDir}/${tmpDir}/${exampleTime}
+mkdir -p ${zipDir}/${tmpDir}/${exampleWeather}
+
mkdir ${zipDir}/${tmpDir}/build
+mkdir ${zipDir}/${tmpDir}/build/examples
#=====================#
# Prepare BINARY ZIP. #
@@ -52,20 +81,70 @@ mkdir ${zipDir}/${tmpDir}/build
rsync -avzq bin ${zipDir}/${tmpDir} --exclude '**/.DS_Store' --exclude
bin/prepare.sh --exclude bin/MAVEN-RELEASE.md
rsync -avzq openapi ${zipDir}/${tmpDir} --exclude '**/.DS_Store'
-rsync -avzq ${coreModule}/src ${zipDir}/${tmpDir}/${coreModule} --exclude
'**/.DS_Store' --exclude '**/*.iml' --exclude '**/python/ctxword/data'
--exclude '**/server/geo/tools/**/*.txt'
-rsync -avzq ${stanfordModule}/src ${zipDir}/${tmpDir}/${stanfordModule}
--exclude '**/.DS_Store' --exclude '**/*.iml'
+
+function cpSrc() {
+ rsync -avzq "$1"/src ${zipDir}/${tmpDir}/"$1" --exclude '**/.DS_Store'
--exclude '**/*.iml'
+}
+
+cpSrc ${coreModule}
+cpSrc ${stanfordModule}
+cpSrc ${exampleAlarm}
+cpSrc ${exampleEcho}
+cpSrc ${exampleHelloworld}
+cpSrc ${exampleLightswitch}
+cpSrc ${exampleMinecraft}
+cpSrc ${exampleMinecraftMod}
+cpSrc ${examplePhone}
+cpSrc ${exampleSql}
+cpSrc ${exampleTime}
+cpSrc ${exampleWeather}
rsync -avzq sql ${zipDir}/${tmpDir} --exclude '**/.DS_Store'
cp bindist/LICENSE ${zipDir}/${tmpDir}
cp bindist/NOTICE ${zipDir}/${tmpDir}
cp DISCLAIMER ${zipDir}/${tmpDir}
+
cp ${coreModule}/src/main/resources/nlpcraft.conf ${zipDir}/${tmpDir}/build
+
+function cpConf() {
+ cp "$1"/src/main/resources/nlpcraft.conf
${zipDir}/${tmpDir}/build/examples/"$(echo "$1" | tr '/' '-')".conf
+}
+
+cpConf ${exampleAlarm}
+cpConf ${exampleEcho}
+cpConf ${exampleHelloworld}
+cpConf ${exampleLightswitch}
+cpConf ${exampleMinecraft}
+cpConf ${examplePhone}
+cpConf ${exampleSql}
+cpConf ${exampleTime}
+cpConf ${exampleWeather}
+
cp ${coreModule}/src/main/resources/ignite.xml ${zipDir}/${tmpDir}/build
cp ${coreModule}/src/main/resources/log4j2.xml ${zipDir}/${tmpDir}/build
rsync -avzq ${coreModule}/target/*all-deps.jar ${zipDir}/${tmpDir}/build
rsync -avzq ${coreModule}/target/apidocs/** ${zipDir}/${tmpDir}/javadoc
--exclude '**/.DS_Store'
-rsync -avzq ${stanfordModule}/target/*.jar ${zipDir}/${tmpDir}/build --exclude
'*-sources.jar'
+
+function cpJar() {
+ rsync -avzq "$1"/target/*.jar ${zipDir}/${tmpDir}/build --exclude
'*-sources.jar'
+}
+
+function cpJarExamples() {
+ rsync -avzq "$1"/target/*.jar ${zipDir}/${tmpDir}/build/examples --exclude
'*-sources.jar'
+}
+
+cpJar ${stanfordModule}
+cpJarExamples ${exampleAlarm}
+cpJarExamples ${exampleEcho}
+cpJarExamples ${exampleHelloworld}
+cpJarExamples ${exampleLightswitch}
+cpJarExamples ${exampleMinecraft}
+cpJarExamples ${examplePhone}
+cpJarExamples ${exampleSql}
+cpJarExamples ${exampleTime}
+cpJarExamples ${exampleWeather}
+rsync -avzq ${exampleMinecraftMod}/build/libs/*.jar
${zipDir}/${tmpDir}/build/examples --exclude '*-sources.jar'
# Prepares bin zip.
cd ${zipDir} || exit
@@ -84,8 +163,26 @@ rm -R ${tmpDir}/javadoc 2> /dev/null
cd ../
mkdir ${zipDir}/${tmpDir}/javadoc
-cp ${coreModule}/pom.xml ${zipDir}/${tmpDir}/${coreModule}
-cp ${stanfordModule}/pom.xml ${zipDir}/${tmpDir}/${stanfordModule}
+function cpPom() {
+ cp "$1"/pom.xml ${zipDir}/${tmpDir}/"$1"
+}
+
+cpPom ${coreModule}
+cpPom ${stanfordModule}
+cpPom ${exampleAlarm}
+cpPom ${exampleEcho}
+cpPom ${exampleHelloworld}
+cpPom ${exampleLightswitch}
+cpPom ${exampleMinecraft}
+cpPom ${examplePhone}
+cpPom ${exampleSql}
+cpPom ${exampleTime}
+cpPom ${exampleWeather}
+
+cp ${exampleMinecraftMod}/build.gradle
${zipDir}/${tmpDir}/${exampleMinecraftMod}
+cp ${exampleMinecraftMod}/gradlew ${zipDir}/${tmpDir}/${exampleMinecraftMod}
+cp ${exampleMinecraftMod}/gradlew.bat
${zipDir}/${tmpDir}/${exampleMinecraftMod}
+
cp pom.xml ${zipDir}/${tmpDir}
cp LICENSE ${zipDir}/${tmpDir}
cp NOTICE ${zipDir}/${tmpDir}
@@ -113,4 +210,4 @@ cd "${curDir}" || exit
echo
echo "****************************"
echo "ZIPs are prepared in folder: '${zipDir}'"
-echo "****************************"
+echo "****************************"
\ No newline at end of file
diff --git a/nlpcraft-examples/minecraft-mod/LICENSE.txt
b/nlpcraft-examples/minecraft-mod/LICENSE.txt
deleted file mode 100644
index b0cbe2b..0000000
--- a/nlpcraft-examples/minecraft-mod/LICENSE.txt
+++ /dev/null
@@ -1,520 +0,0 @@
-Unless noted below, Minecraft Forge, Forge Mod Loader, and all
-parts herein are licensed under the terms of the LGPL 2.1 found
-here http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt and
-copied below.
-
-Homepage: http://minecraftforge.net/
- https://github.com/MinecraftForge/MinecraftForge
-
-
-A note on authorship:
-All source artifacts are property of their original author, with
-the exclusion of the contents of the patches directory and others
-copied from it from time to time. Authorship of the contents of
-the patches directory is retained by the Minecraft Forge project.
-This is because the patches are partially machine generated
-artifacts, and are changed heavily due to the way forge works.
-Individual attribution within them is impossible.
-
-Consent:
-All contributions to Forge must consent to the release of any
-patch content to the Forge project.
-
-A note on infectivity:
-The LGPL is chosen specifically so that projects may depend on Forge
-features without being infected with its license. That is the
-purpose of the LGPL. Mods and others using this code via ordinary
-Java mechanics for referencing libraries are specifically not bound
-by Forge's license for the Mod code.
-
-
-=== MCP Data ===
-This software includes data from the Minecraft Coder Pack (MCP), with kind
permission
-from them. The license to MCP data is not transitive - distribution of this
data by
-third parties requires independent licensing from the MCP team. This data is
not
-redistributable without permission from the MCP team.
-
-=== Sharing ===
-I grant permission for some parts of FML to be redistributed outside the terms
of the LGPL, for the benefit of
-the minecraft modding community. All contributions to these parts should be
licensed under the same additional grant.
-
--- Runtime patcher --
-License is granted to redistribute the runtime patcher code
(src/main/java/net/minecraftforge/fml/common/patcher
-and subdirectories) under any alternative open source license as classified by
the OSI (http://opensource.org/licenses)
-
--- ASM transformers --
-License is granted to redistribute the ASM transformer code
(src/main/java/net/minecraftforge/common/asm/ and subdirectories)
-under any alternative open source license as classified by the OSI
(http://opensource.org/licenses)
-
-=========================================================================
-This software includes portions from the Apache Maven project at
-http://maven.apache.org/ specifically the ComparableVersion.java code. It is
-included based on guidelines at
-http://www.softwarefreedom.org/resources/2007/gpl-non-gpl-collaboration.html
-with notices intact. The only change is a non-functional change of package
name.
-
-This software contains a partial repackaging of javaxdelta, a BSD licensed
program for generating
-binary differences and applying them, sourced from the subversion at
http://sourceforge.net/projects/javaxdelta/
-authored by genman, heikok, pivot.
-The only changes are to replace some Trove collection types with standard Java
collections, and repackaged.
-=========================================================================
-
-
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
diff --git a/nlpcraft-examples/minecraft-mod/build.gradle
b/nlpcraft-examples/minecraft-mod/build.gradle
index b1dd4d9..c6973e4 100644
--- a/nlpcraft-examples/minecraft-mod/build.gradle
+++ b/nlpcraft-examples/minecraft-mod/build.gradle
@@ -74,14 +74,14 @@ jar {
task dumpBlocks(type: JavaExec) {
description = 'Dumps game file objects. Supports 2 types: items and blocks'
classpath sourceSets.main.runtimeClasspath
- main = "org.apache.nlpcraft.example.minecraft.NCMinecraftFilesDump"
+ main = "org.apache.nlpcraft.example.minecraft.utils.NCMinecraftFilesDump"
args "block", minecraftVersion
}
task dumpItems(type: JavaExec) {
description = 'Dumps game file objects. Supports 2 types: items and blocks'
classpath sourceSets.main.runtimeClasspath
- main = "org.apache.nlpcraft.example.minecraft.NCMinecraftFilesDump"
+ main = "org.apache.nlpcraft.example.minecraft.utils.NCMinecraftFilesDump"
args "block", minecraftVersion
}
diff --git a/nlpcraft-examples/minecraft-mod/gradle/wrapper/gradle-wrapper.jar
b/nlpcraft-examples/minecraft-mod/gradle/wrapper/gradle-wrapper.jar
index 7a3265e..e708b1c 100644
Binary files
a/nlpcraft-examples/minecraft-mod/gradle/wrapper/gradle-wrapper.jar and
b/nlpcraft-examples/minecraft-mod/gradle/wrapper/gradle-wrapper.jar differ
diff --git
a/nlpcraft-examples/minecraft-mod/gradle/wrapper/gradle-wrapper.properties
b/nlpcraft-examples/minecraft-mod/gradle/wrapper/gradle-wrapper.properties
index 1d5b29f..290541c 100644
--- a/nlpcraft-examples/minecraft-mod/gradle/wrapper/gradle-wrapper.properties
+++ b/nlpcraft-examples/minecraft-mod/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip
diff --git a/nlpcraft-examples/minecraft-mod/gradlew
b/nlpcraft-examples/minecraft-mod/gradlew
index cccdd3d..4f906e0 100755
--- a/nlpcraft-examples/minecraft-mod/gradlew
+++ b/nlpcraft-examples/minecraft-mod/gradlew
@@ -1,5 +1,21 @@
#!/usr/bin/env sh
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
##############################################################################
##
## Gradle start up script for UN*X
@@ -28,7 +44,7 @@ APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to
pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
@@ -66,6 +82,7 @@ esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
@@ -109,10 +126,11 @@ if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\"
\"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
@@ -138,19 +156,19 @@ if $cygwin ; then
else
eval `echo args$i`="\"$arg\""
fi
- i=$((i+1))
+ i=`expr $i + 1`
done
case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5"
"$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5"
"$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5"
"$args6" "$args7" "$args8" ;;
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5"
"$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5"
"$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5"
"$args6" "$args7" "$args8" ;;
esac
fi
@@ -159,14 +177,9 @@ save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ;
done
echo " "
}
-APP_ARGS=$(save "$@")
+APP_ARGS=`save "$@"`
# Collect all arguments for the java command, following the shell quoting and
substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
"\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\""
org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-# by default we should be in the correct project dir, but when run from Finder
on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
- cd "$(dirname "$0")"
-fi
-
exec "$JAVACMD" "$@"
diff --git a/nlpcraft-examples/minecraft-mod/gradlew.bat
b/nlpcraft-examples/minecraft-mod/gradlew.bat
index e95643d..107acd3 100644
--- a/nlpcraft-examples/minecraft-mod/gradlew.bat
+++ b/nlpcraft-examples/minecraft-mod/gradlew.bat
@@ -1,84 +1,89 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS
to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your
PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS%
"-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%"
org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code
instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS
to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your
PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS%
"-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%"
org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code
instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git
a/nlpcraft-examples/minecraft-mod/src/main/java/org/apache/nplcraft/example/minecraft/NCMinecraftExampleMod.java
b/nlpcraft-examples/minecraft-mod/src/main/java/org/apache/nplcraft/example/minecraft/NCMinecraftExampleMod.java
index f95e2f1..1adb1c9 100644
---
a/nlpcraft-examples/minecraft-mod/src/main/java/org/apache/nplcraft/example/minecraft/NCMinecraftExampleMod.java
+++
b/nlpcraft-examples/minecraft-mod/src/main/java/org/apache/nplcraft/example/minecraft/NCMinecraftExampleMod.java
@@ -46,6 +46,8 @@ import java.util.Set;
*/
@Mod("nlpcraft_mod")
public class NCMinecraftExampleMod {
+ // Initial configuration values for communication with NLPCraft server.
+ // These values can be overridden by 'nlpcraft-settings.json' file values.
private static final String DFLT_EMAIL = "[email protected]";
private static final String DFLT_PWD = "admin";
private static final String DFLT_HOST = "0.0.0.0";
@@ -94,7 +96,7 @@ public class NCMinecraftExampleMod {
*/
private static class NCSignIn {
private String email;
- private String pwd;
+ private String passwd;
}
/**
@@ -171,13 +173,13 @@ public class NCMinecraftExampleMod {
* Makes sign in JSON bean.
*
* @param email Email.
- * @param pwd Password.
+ * @param pwd Password.
*/
private static NCSignIn mkSignin(String email, String pwd) {
NCSignIn s = new NCSignIn();
s.email = email;
- s.pwd = pwd;
+ s.passwd = pwd;
return s;
}
@@ -206,7 +208,7 @@ public class NCMinecraftExampleMod {
resp = post("ask/sync", GSON.toJson(params), NCResponse.class);
}
catch (UnauthorizedException e) {
- // Token can be expired.
+ // Token can be expired, it tries to connect and process given
command again.
this.token = signin();
params.acsTok = this.token;
@@ -234,9 +236,9 @@ public class NCMinecraftExampleMod {
/**
* Does REST POST.
*
- * @param url POST URL.
+ * @param url POST URL.
* @param postJson POST JSON payload.
- * @param clazz Return value type.
+ * @param clazz Return value type.
*/
private <T> T post(String url, String postJson, Class<T> clazz) throws
Exception {
assert baseUrl != null;
diff --git
a/nlpcraft-examples/minecraft-mod/src/main/java/org/apache/nplcraft/example/minecraft/utils/NCMinecraftFilesDump.java
b/nlpcraft-examples/minecraft-mod/src/main/java/org/apache/nplcraft/example/minecraft/utils/NCMinecraftFilesDump.java
index c8db99a..8fdacdf 100644
---
a/nlpcraft-examples/minecraft-mod/src/main/java/org/apache/nplcraft/example/minecraft/utils/NCMinecraftFilesDump.java
+++
b/nlpcraft-examples/minecraft-mod/src/main/java/org/apache/nplcraft/example/minecraft/utils/NCMinecraftFilesDump.java
@@ -28,7 +28,7 @@ import net.minecraftforge.registries.ForgeRegistry;
import net.minecraftforge.registries.ForgeRegistryEntry;
/**
- * Utility for getting data from minecraft.
+ * Utility for getting data from minecraft. These values are used for
preparing synonyms for user defined elements.
*/
public class NCMinecraftFilesDump {
private final static Gson GSON = new Gson();
diff --git
a/nlpcraft-examples/minecraft/src/main/kotlin/org/apache/nlpcraft/example/minecraft/MinecraftFIllMatchProcessor.kt
b/nlpcraft-examples/minecraft/src/main/kotlin/org/apache/nlpcraft/example/minecraft/MinecraftFIllMatchProcessor.kt
index 1890fea..c1a4f27 100644
---
a/nlpcraft-examples/minecraft/src/main/kotlin/org/apache/nlpcraft/example/minecraft/MinecraftFIllMatchProcessor.kt
+++
b/nlpcraft-examples/minecraft/src/main/kotlin/org/apache/nlpcraft/example/minecraft/MinecraftFIllMatchProcessor.kt
@@ -23,11 +23,27 @@ import org.apache.nlpcraft.model.*
import java.util.*
/**
- * Utility fill processor.
+ * Special processor for support 'fillIntent' intent processing.
+ * Is is designed as separated class to simplify main model class.
*/
class MinecraftFIllMatchProcessor {
+ internal data class Coordinate(val x: Int = 0, val y: Int = 0, val z: Int
= 0) {
+ override fun toString(): String {
+ return "$x $y $z"
+ }
+
+ fun relative(): String {
+ return "~$x ~$y ~$z"
+ }
+
+ fun relativeRotated(): String {
+ return "^$x ^$y ^$z"
+ }
+ }
+
companion object {
fun process(
+ ctx: NCIntentMatch,
@NCIntentTerm("shape") shape: NCToken,
@NCIntentTerm("block") blockToken: NCToken,
@NCIntentTerm("len") length: Optional<NCToken>,
@@ -52,15 +68,15 @@ class MinecraftFIllMatchProcessor {
Coordinate((length - 1) / 2, 0, (length - 1) / 2)
"cube" -> Coordinate(-length / 2, -length / 2, -length / 2) to
Coordinate((length - 1) / 2, (length - 1) / 2, (length -
1) / 2)
- else -> throw NCRejection("Unsupported shape: $shape")
+ else -> throw NCRejection("Unsupported shape")
}
}
- private fun positionCoordinate(pos: NCToken): Coordinate {
- return when (pos.id) {
+ private fun positionCoordinate(position: NCToken): Coordinate {
+ return when (position.id) {
"position:player" -> Coordinate()
- "position:front" -> Coordinate(0, 0,
transformLength(Optional.of(pos), 10))
- else -> throw NCRejection("Unsupported position: ${pos.id}")
+ "position:front" -> Coordinate(0, 0,
transformLength(Optional.of(position), 10))
+ else -> throw NCRejection("Unsupported position")
}
}
@@ -69,17 +85,17 @@ class MinecraftFIllMatchProcessor {
x.partTokens.stream()
.filter { it.id == "nlpcraft:num" }
.findAny()
- .map { it.toInt() }
- }
- .orElse(default)
+ .map { it.meta<Double>("nlpcraft:num:from").toInt() }
+ }.orElse(default)
}
private fun findPlayer(position: NCToken): String {
- return position.partTokens.stream()
- .filter { it.id == "mc:player" }
- .findAny()
- .orElseThrow { AssertionError("Player wasn't found.") }
- .player()
+ val part = position.partTokens.stream()
+ .filter { it.id == "mc:player" }
+ .findAny()
+ .orElseThrow { AssertionError("Player wasn't found") }
+
+ return if (part.lemma == "i" || part.lemma == "my") "@p" else
part.originalText ?: "@p"
}
}
}
diff --git
a/nlpcraft-examples/minecraft/src/main/kotlin/org/apache/nlpcraft/example/minecraft/MinecraftModel.kt
b/nlpcraft-examples/minecraft/src/main/kotlin/org/apache/nlpcraft/example/minecraft/MinecraftModel.kt
index e97496d..745d792 100644
---
a/nlpcraft-examples/minecraft/src/main/kotlin/org/apache/nlpcraft/example/minecraft/MinecraftModel.kt
+++
b/nlpcraft-examples/minecraft/src/main/kotlin/org/apache/nlpcraft/example/minecraft/MinecraftModel.kt
@@ -24,10 +24,18 @@ import org.apache.nlpcraft.model.*
import java.util.*
/**
- * Minecraft example model.
+ * Minecraft example data model.
+ * TODO:
+ * <p>
+ * See 'README.md' file in the same folder for running and testing
instructions.
*/
-@Suppress("unused")
class MinecraftModel : NCModelFileAdapter("minecraft.yaml") {
+ private fun checkAmbiguous(ctx: NCIntentMatch) {
+ if (ctx.isAmbiguous) {
+ throw NCRejection("Ambiguous request")
+ }
+ }
+
/**
* Weather intent callback.
*/
@@ -39,9 +47,7 @@ class MinecraftModel : NCModelFileAdapter("minecraft.yaml") {
"heavy storm is coming"
)
fun onWeatherMatch(ctx: NCIntentMatch, @NCIntentTerm("arg") tok: NCToken):
NCResult {
- if (ctx.isAmbiguous) {
- throw NCRejection("Ambiguous request")
- }
+ checkAmbiguous(ctx)
return NCResult.text("weather ${tok.id}")
}
@@ -57,9 +63,7 @@ class MinecraftModel : NCModelFileAdapter("minecraft.yaml") {
"it's midnight"
)
fun onTimeMatch(ctx: NCIntentMatch, @NCIntentTerm("arg") tok: NCToken):
NCResult {
- if (ctx.isAmbiguous) {
- throw NCRejection("Ambiguous request")
- }
+ checkAmbiguous(ctx)
val time: Int = when (tok.id) {
"morning" -> 23000
@@ -91,13 +95,14 @@ class MinecraftModel : NCModelFileAdapter("minecraft.yaml")
{
@NCIntentTerm("action") target: NCToken,
@NCIntentTerm("quantity") quantity: Optional<NCToken>
): NCResult {
- if (ctx.isAmbiguous) {
- throw NCRejection("Ambiguous request")
- }
+ checkAmbiguous(ctx)
val itemRegistry = dumps["item"]!![item.value]!!
- val player = target.partTokens[1].player()
- val itemQuantity = quantity.map(NCToken::toInt).orElse(1)
+
+ val part = target.partTokens[1]
+ val player = if (part.lemma == "i" || part.lemma == "my") "@p" else
part.originalText ?: "@p"
+
+ val itemQuantity = if (quantity.isPresent)
quantity.get().meta<Double>("nlpcraft:num:from").toInt() else 1
return NCResult.text("give $player $itemRegistry $itemQuantity")
}
@@ -114,11 +119,12 @@ class MinecraftModel :
NCModelFileAdapter("minecraft.yaml") {
"make a box of sand with the size of 2 10 meters in front of me"
)
fun onFillMatch(
+ ctx: NCIntentMatch,
@NCIntentTerm("shape") shape: NCToken,
@NCIntentTerm("block") block: NCToken,
@NCIntentTerm("len") length: Optional<NCToken>,
@NCIntentTerm("position") position: NCToken,
): NCResult {
- return MinecraftFIllMatchProcessor.process(shape, block, length,
position)
+ return MinecraftFIllMatchProcessor.process(ctx, shape, block, length,
position)
}
}
diff --git
a/nlpcraft-examples/minecraft/src/main/kotlin/org/apache/nlpcraft/example/minecraft/MinecraftUtils.kt
b/nlpcraft-examples/minecraft/src/main/kotlin/org/apache/nlpcraft/example/minecraft/MinecraftUtils.kt
deleted file mode 100644
index 8fab25e..0000000
---
a/nlpcraft-examples/minecraft/src/main/kotlin/org/apache/nlpcraft/example/minecraft/MinecraftUtils.kt
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.nlpcraft.example.minecraft
-
-import org.apache.nlpcraft.model.NCToken
-
-private var firstPersonWords = setOf("me", "my", "i")
-
-/**
- *
- */
-internal fun NCToken.toInt(): Int {
- return this.meta<Double>("nlpcraft:num:from").toInt()
-}
-
-/**
- *
- */
-internal fun NCToken.player(): String {
- return if (firstPersonWords.contains(this.normalizedText)) "@p" else
this.originalText ?: "@p"
-}
-
-/**
- *
- */
-internal data class Coordinate(val x: Int = 0, val y: Int = 0, val z: Int = 0)
{
- override fun toString(): String {
- return "$x $y $z"
- }
-
- fun relative(): String {
- return "~$x ~$y ~$z"
- }
-
- fun relativeRotated(): String {
- return "^$x ^$y ^$z"
- }
-}
\ No newline at end of file
diff --git
a/nlpcraft-examples/minecraft/src/main/kotlin/org/apache/nlpcraft/example/minecraft/MinecraftValueLoader.kt
b/nlpcraft-examples/minecraft/src/main/kotlin/org/apache/nlpcraft/example/minecraft/MinecraftValueLoader.kt
index 4191bfe..665a575 100644
---
a/nlpcraft-examples/minecraft/src/main/kotlin/org/apache/nlpcraft/example/minecraft/MinecraftValueLoader.kt
+++
b/nlpcraft-examples/minecraft/src/main/kotlin/org/apache/nlpcraft/example/minecraft/MinecraftValueLoader.kt
@@ -26,6 +26,11 @@ import org.apache.nlpcraft.model.NCModelFileAdapter
import org.apache.nlpcraft.model.NCValue
import org.apache.nlpcraft.model.NCValueLoader
+/**
+ * Data loader from JSON data files.
+ * These files which prepared via 'minectaft-mod' module
org.apache.nplcraft.example.minecraft.utils.GameFilesDump
+ * for this supported `minecraft` server version.
+ */
class MinecraftValueLoader : NCValueLoader {
private data class Dump(val version: String, val data: Map<String, String>)