You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nlpcraft.apache.org by se...@apache.org on 2021/05/03 10:08:16 UTC

[incubator-nlpcraft] branch NLPCRAFT-314 created (now 86b64f4)

This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a change to branch NLPCRAFT-314
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git.


      at 86b64f4  WIP.

This branch includes the following new commits:

     new 86b64f4  WIP.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[incubator-nlpcraft] 01/01: WIP.

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a commit to branch NLPCRAFT-314
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit 86b64f4169e64291cfc76a5cd1732cfd46c97b51
Author: Sergey Kamov <sk...@gmail.com>
AuthorDate: Mon May 3 13:07:38 2021 +0300

    WIP.
---
 .../assets/nlpcraft-example-minecraft-mod-1.0.jar  | Bin 15986 -> 17857 bytes
 .../example/minecraft/NCMinecraftExampleMod.java   |   8 +-
 .../minecraft/utils/NCMinecraftFilesDump.java      | 123 +++++++++++++++++----
 .../minecraft/src/main/resources/block.json        |  14 ++-
 .../minecraft/src/main/resources/item.json         |  14 ++-
 5 files changed, 123 insertions(+), 36 deletions(-)

diff --git a/nlpcraft-examples/minecraft-mod/assets/nlpcraft-example-minecraft-mod-1.0.jar b/nlpcraft-examples/minecraft-mod/assets/nlpcraft-example-minecraft-mod-1.0.jar
index b5a7152..a72d54c 100644
Binary files a/nlpcraft-examples/minecraft-mod/assets/nlpcraft-example-minecraft-mod-1.0.jar and b/nlpcraft-examples/minecraft-mod/assets/nlpcraft-example-minecraft-mod-1.0.jar differ
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 1adb1c9..1ab1de4 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
@@ -38,8 +38,8 @@ import java.net.URL;
 import java.nio.file.Files;
 import java.nio.file.NoSuchFileException;
 import java.nio.file.Paths;
-import java.util.HashSet;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * Minecraft example mod for the Minecraft Forge server.
@@ -57,7 +57,7 @@ public class NCMinecraftExampleMod {
     private static final String MODEL_ID = "nlpcraft.minecraft.ex";
     private static final Gson GSON = new Gson();
 
-    private final Set<String> convCmds = new HashSet<>();
+    private final Set<String> convCmds = ConcurrentHashMap.newKeySet();
 
     private NCSignIn creds;
     private String baseUrl;
@@ -117,7 +117,9 @@ public class NCMinecraftExampleMod {
     }
 
     private static class UnauthorizedException extends Exception {
-        // No-op.
+        public UnauthorizedException() {
+            super("Authorization error");
+        }
     }
 
     /**
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 8fdacdf..7625cc9 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
@@ -19,39 +19,68 @@
 package org.apache.nplcraft.example.minecraft.utils;
 
 import com.google.gson.Gson;
-import java.util.Map;
-import java.util.stream.Collectors;
+import com.google.gson.GsonBuilder;
+import com.mojang.serialization.Lifecycle;
+import net.minecraft.item.Item;
+import net.minecraft.util.RegistryKey;
+import net.minecraft.util.ResourceLocation;
 import net.minecraft.util.registry.DefaultedRegistry;
 import net.minecraft.util.registry.Registry;
-import net.minecraftforge.registries.ForgeRegistries;
-import net.minecraftforge.registries.ForgeRegistry;
 import net.minecraftforge.registries.ForgeRegistryEntry;
+import net.minecraftforge.registries.GameData;
+import net.minecraftforge.registries.IForgeRegistryEntry;
+import net.minecraft.block.Block;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Date;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 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();
+    private final static Gson GSON = new GsonBuilder().setPrettyPrinting().create();
 
-    private static class Dump {
+    private static class Json {
         private String version;
         private Map<String, String> data;
     }
 
-    private static <T extends ForgeRegistryEntry<?>> void dumpRegistry(DefaultedRegistry<T> registry, String version) {
-        Dump dump = new Dump();
+    /**
+     * @param writer
+     * @param s
+     * @throws IOException
+     */
+    private static void write(BufferedWriter writer, String s) throws IOException {
+        writer.write(s);
+        writer.newLine();
+    }
+
+    /**
+     * @param type
+     * @param reg
+     * @param ver
+     * @param <T>
+     * @throws IOException
+     */
+    private static <T extends ForgeRegistryEntry<?>> void write(String type, Registry<T> reg, String ver) throws IOException {
+        Json js = new Json();
 
-        dump.version = version;
+        js.version = ver;
 
         // Regular name -> registry name.
-        dump.data =
-            registry.stream().filter(x -> x.getRegistryName() != null).
+        js.data =
+            reg.stream().filter(x -> x.getRegistryName() != null).
                 collect(Collectors.toMap(
                     x -> transformPath(x.getRegistryName().getPath()),
                     x -> x.getRegistryName().toString())
                 );
         // Add matching like grass -> grass_block.
-        dump.data.putAll(registry.stream()
+        js.data.putAll(reg.stream()
             .filter(x -> x.getRegistryName() != null && x.getRegistryName().getPath().endsWith("_block"))
             .collect(Collectors.toMap(
                 x -> transformPath(x.getRegistryName().getPath().replace("_block", "")),
@@ -59,30 +88,82 @@ public class NCMinecraftFilesDump {
             )
         );
 
-        System.out.println(GSON.toJson(dump));
+        File f = new File(type + ".json");
+
+        try (BufferedWriter writer = new BufferedWriter(new FileWriter(f))) {
+            write(writer, "/*");
+            write(writer, " * Licensed to the Apache Software Foundation (ASF) under one or more");
+            write(writer, " * contributor license agreements.  See the NOTICE file distributed with");
+            write(writer, " * this work for additional information regarding copyright ownership.");
+            write(writer, " * The ASF licenses this file to You under the Apache License, Version 2.0");
+            write(writer, " * (the 'License'); you may not use this file except in compliance with");
+            write(writer, " * the License.  You may obtain a copy of the License at");
+            write(writer, " *");
+            write(writer, " *     http://www.apache.org/licenses/LICENSE-2.0");
+            write(writer, " *");
+            write(writer, " * Unless required by applicable law or agreed to in writing, software");
+            write(writer, " * distributed under the License is distributed on an 'AS IS' BASIS,");
+            write(writer, " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.");
+            write(writer, " * See the License for the specific language governing permissions and");
+            write(writer, " * limitations under the License.");
+            write(writer, " *");
+            write(writer, " * Auto-generated on: " + new Date());
+            write(writer, " * Dump file with minecraft '" + type + "' game objects. Was made for specified game version: " + ver);
+            write(writer, " *");
+            write(writer, " */");
+
+            writer.newLine();
+
+            writer.write(GSON.toJson(js));
+        }
+
+        System.out.println("File prepared: " + f.getAbsolutePath());
     }
 
+    /**
+     * @param path
+     * @return
+     */
     private static String transformPath(String path) {
         return path.replaceAll("_", " ");
     }
 
     /**
-     * App entry point.
+     * @param type
+     * @param <T>
+     * @return
+     */
+    private static <T extends IForgeRegistryEntry<T>> DefaultedRegistry<T> mkRegistry(String type) {
+        RegistryKey<Registry<T>> orCreateRootKey = RegistryKey.getOrCreateRootKey(new ResourceLocation(type));
+
+        return GameData.getWrapper(orCreateRootKey, Lifecycle.experimental(), "air");
+    }
+
+    /**
+     * Application entry point.
      *
      * @param args Command line arguments.
+     * @throws IOException If any IO error occurs.
      */
-    public static void main(String[] args) {
+    public static void main(String[] args) throws IOException {
+        if (args.length != 2)
+            throw new IllegalArgumentException("2 mandatory parameters should be defined: 'type' and 'version'");
+
         String type = args[0];
-        String version = args[1];
+        String ver = args[1];
+
+        if (!type.equals("block") && !type.equals("item"))
+            throw new IllegalArgumentException("Unsupported type, supported are 'block' and 'item'");
 
         if (type.equals("block")) {
-            dumpRegistry(Registry.BLOCK, version);
-        }
-        else if (type.equals("item")) {
-            dumpRegistry(Registry.ITEM, version);
+            DefaultedRegistry<Block> reg = mkRegistry("block");
+
+            write(type, reg, ver);
         }
         else {
-            System.err.println("Unknown type");
+            DefaultedRegistry<Item> reg = mkRegistry("item");
+
+            write(type, reg, ver);
         }
     }
 }
diff --git a/nlpcraft-examples/minecraft/src/main/resources/block.json b/nlpcraft-examples/minecraft/src/main/resources/block.json
index b8c392e..599ef46 100644
--- a/nlpcraft-examples/minecraft/src/main/resources/block.json
+++ b/nlpcraft-examples/minecraft/src/main/resources/block.json
@@ -3,19 +3,21 @@
  * 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 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
+ *     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,
+ * 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.
+ *
+ * Auto-generated on: Mon May 03 13:04:01 MSK 2021
+ * Dump file with minecraft 'block' game objects. Was made for specified game version: 1.16.4
+ *
  */
-// Dump file with minecraft block game objects. Was made for specified game version (see below)
-// Generated with dumpBlocks task in minecraft-mod module
 
 {
   "version": "1.16.4",
@@ -808,4 +810,4 @@
     "pink shulker box": "minecraft:pink_shulker_box",
     "crimson button": "minecraft:crimson_button"
   }
-}
+}
\ No newline at end of file
diff --git a/nlpcraft-examples/minecraft/src/main/resources/item.json b/nlpcraft-examples/minecraft/src/main/resources/item.json
index 1856f3c..291f401 100644
--- a/nlpcraft-examples/minecraft/src/main/resources/item.json
+++ b/nlpcraft-examples/minecraft/src/main/resources/item.json
@@ -3,19 +3,21 @@
  * 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 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
+ *     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,
+ * 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.
+ *
+ * Auto-generated on: Mon May 03 13:04:39 MSK 2021
+ * Dump file with minecraft 'item' game objects. Was made for specified game version: 1.16.4
+ *
  */
-// Dump file with minecraft item game objects. Was made for specified game version (see below)
-// Generated with dumpItems task in minecraft-mod module
 
 {
   "version": "1.16.4",
@@ -1013,4 +1015,4 @@
     "lapis lazuli": "minecraft:lapis_lazuli",
     "carrot": "minecraft:carrot"
   }
-}
+}
\ No newline at end of file