diff --git a/README.md b/README.md
index 0af5e235..8f87de78 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,10 @@
-
+
[![forthebadge made-with-java](http://ForTheBadge.com/images/badges/made-with-java.svg)](https://java.com/)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![Build Status](https://ci.nukkitx.com/job/Geyser/job/master/badge/icon)](https://ci.nukkitx.com/job/Geyser/job/master/)
-[![Discord](https://img.shields.io/discord/597838753859633172.svg?color=%237289da&label=discord)](https://discord.gg/mRjbCsS)
+[![Discord](https://img.shields.io/discord/597838753859633172.svg?color=%237289da&label=discord)](https://discord.gg/7ZDSKa5)
[![HitCount](http://hits.dwyl.io/Geyser/GeyserMC.svg)](http://hits.dwyl.io/Geyser/GeyserMC)
A bridge between Minecraft: Bedrock Edition and Minecraft: Java Edition, closing the gap from those wanting to play together.
diff --git a/connector/src/main/java/org/geysermc/connector/GeyserConnector.java b/connector/src/main/java/org/geysermc/connector/GeyserConnector.java
index 5fd580b0..cbd444d8 100644
--- a/connector/src/main/java/org/geysermc/connector/GeyserConnector.java
+++ b/connector/src/main/java/org/geysermc/connector/GeyserConnector.java
@@ -147,7 +147,7 @@ public class GeyserConnector implements Connector {
}
}).join();
- metrics = new Metrics("GeyserMC", instance.getConfig().getUUID(), true, java.util.logging.Logger.getLogger(""));
+ metrics = new Metrics("GeyserMC", config.getUUID(), true, java.util.logging.Logger.getLogger(""));
metrics.addCustomChart(new Metrics.SingleLineChart("servers", () -> 1));
metrics.addCustomChart(new Metrics.SingleLineChart("players", Geyser::getPlayerCount));
}
diff --git a/connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java b/connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java
index 231fe7ef..4eff9344 100644
--- a/connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java
+++ b/connector/src/main/java/org/geysermc/connector/network/session/GeyserSession.java
@@ -158,7 +158,7 @@ public class GeyserSession implements PlayerSession, Player {
public void disconnected(DisconnectedEvent event) {
loggedIn = false;
connector.getLogger().info(authenticationData.getName() + " has disconnected from remote java server on address " + remoteServer.getAddress() + " because of " + event.getReason());
- // upstream.disconnect(event.getReason());
+ upstream.disconnect(event.getReason());
}
@Override
@@ -299,4 +299,4 @@ public class GeyserSession implements PlayerSession, Player {
playStatusPacket.setStatus(PlayStatusPacket.Status.PLAYER_SPAWN);
upstream.sendPacket(playStatusPacket);
}
-}
\ No newline at end of file
+}
diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/item/DyeColor.java b/connector/src/main/java/org/geysermc/connector/network/translators/item/DyeColor.java
deleted file mode 100644
index bd277c9c..00000000
--- a/connector/src/main/java/org/geysermc/connector/network/translators/item/DyeColor.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.geysermc.connector.network.translators.item;
-
-import lombok.Getter;
-
-public enum DyeColor {
-
- WHITE,
- ORANGE,
- MAGENTA,
- LIGHT_BLUE,
- YELLOW,
- LIME,
- PINK,
- GRAY,
- LIGHT_GRAY,
- CYAN,
- PURPLE,
- BLUE,
- BROWN,
- GREEN,
- RED,
- BLACK;
-
- @Getter
- private final int id = ordinal();
-
- public String getName() {
- return name().toLowerCase();
- }
-}
diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/item/ItemTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/item/ItemTranslator.java
index 29cb6179..a4e07f44 100644
--- a/connector/src/main/java/org/geysermc/connector/network/translators/item/ItemTranslator.java
+++ b/connector/src/main/java/org/geysermc/connector/network/translators/item/ItemTranslator.java
@@ -43,11 +43,9 @@ import com.github.steveice10.opennbt.tag.builtin.StringTag;
import com.github.steveice10.opennbt.tag.builtin.Tag;
import com.nukkitx.protocol.bedrock.data.ItemData;
import org.geysermc.connector.console.GeyserLogger;
-import org.geysermc.connector.utils.MessageUtils;
import org.geysermc.connector.utils.Remapper;
-import org.geysermc.connector.utils.Toolbox;
+import org.geysermc.connector.utils.MessageUtils;
-import java.rmi.MarshalException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -55,7 +53,7 @@ import java.util.Map;
public class ItemTranslator {
- public static ItemStack translateToJava(ItemData data) {
+ public ItemStack translateToJava(ItemData data) {
JavaItem javaItem = getJavaItem(data);
if (data.getTag() == null) {
@@ -64,7 +62,7 @@ public class ItemTranslator {
return new ItemStack(javaItem.getId(), data.getCount(), translateToJavaNBT(data.getTag()));
}
- public static ItemData translateToBedrock(ItemStack stack) {
+ public ItemData translateToBedrock(ItemStack stack) {
// Most likely air if null
if (stack == null) {
return ItemData.AIR;
@@ -77,54 +75,38 @@ public class ItemTranslator {
return ItemData.of(bedrockItem.getId(), (short) bedrockItem.getData(), stack.getAmount(), translateToBedrockNBT(stack.getNBT()));
}
- public static BedrockItem getBedrockItem(ItemStack stack) {
- Map m = Remapper.JAVA_TO_BEDROCK.get(stack.getId());
- if (m == null) {
+ public BedrockItem getBedrockItem(ItemStack stack) {
+ BedrockItem bedrockItem = Remapper.ITEM_REMAPPER.convertToBedrock(stack);
+ if (bedrockItem == null) {
GeyserLogger.DEFAULT.debug("Missing mapping for java item " + stack.getId());
return BedrockItem.AIR;
}
- return new BedrockItem((String) m.get("name"), (Integer) m.get("id"), (Integer) m.get("data"));
+
+ return bedrockItem;
}
- public static JavaItem getJavaItem(ItemData data) {
- Map m = Remapper.BEDROCK_TO_JAVA.get(data.getId()).get(data.getDamage());
- if (m == null) {
- GeyserLogger.DEFAULT.debug("Missing mapping for bedrock item " + data.getId() + ":" + data.getDamage());
+ public JavaItem getJavaItem(ItemData data) {
+ JavaItem javaItem = Remapper.ITEM_REMAPPER.convertToJava(data);
+ if (javaItem == null) {
+ GeyserLogger.DEFAULT.debug("Missing mapping for bedrock item " + data.getId() + ":" + data.getDamage());
return JavaItem.AIR;
}
- return new JavaItem((String) m.get("name"), (Integer) m.get("id"));
+
+ return javaItem;
}
- public static BedrockItem getBedrockBlock(BlockState stack) {
- Map m = Remapper.JAVA_TO_BEDROCK_BLOCKS.get(stack.getId());
- if (m == null)
+ public BedrockItem getBedrockBlock(BlockState state) {
+ BedrockItem bedrockItem = Remapper.BLOCK_REMAPPER.convertToBedrock(new ItemStack(state.getId()));
+ if (bedrockItem == null) {
+ //GeyserLogger.DEFAULT.debug("Missing mapping for java item " + state.getId());
return BedrockItem.AIR;
-
- return new BedrockItem((String) m.get("name"), (Integer) m.get("id"), (Integer) m.get("data"));
- }
-
- public static String getBedrockIdentifier(String javaIdentifier) {
- if (!Remapper.JAVA_TO_BEDROCK.containsKey(javaIdentifier)) {
- return javaIdentifier;
}
- if ((int) Remapper.JAVA_TO_BEDROCK.get(javaIdentifier).get("data") > 0) {
- return Remapper.JAVA_TO_BEDROCK.get(javaIdentifier).get("name") + ":" + Remapper.JAVA_TO_BEDROCK.get(javaIdentifier).get("data");
- }
-
- return (String) Remapper.JAVA_TO_BEDROCK.get(javaIdentifier).get("name");
+ return bedrockItem;
}
- public static String getJavaIdentifier(String bedrockIdentifier, int data) {
- if (!Remapper.BEDROCK_TO_JAVA.containsKey(bedrockIdentifier)) {
- return bedrockIdentifier;
- }
-
- return (String) Remapper.BEDROCK_TO_JAVA.get(bedrockIdentifier).get(data).get("name");
- }
-
- private static CompoundTag translateToJavaNBT(com.nukkitx.nbt.tag.CompoundTag tag) {
+ private CompoundTag translateToJavaNBT(com.nukkitx.nbt.tag.CompoundTag tag) {
CompoundTag javaTag = new CompoundTag(tag.getName());
Map javaValue = javaTag.getValue();
if (tag.getValue() != null && !tag.getValue().isEmpty()) {
@@ -141,7 +123,7 @@ public class ItemTranslator {
return javaTag;
}
- private static Tag translateToJavaNBT(com.nukkitx.nbt.tag.Tag tag) {
+ private Tag translateToJavaNBT(com.nukkitx.nbt.tag.Tag tag) {
if (tag instanceof com.nukkitx.nbt.tag.ByteArrayTag) {
com.nukkitx.nbt.tag.ByteArrayTag byteArrayTag = (com.nukkitx.nbt.tag.ByteArrayTag) tag;
return new ByteArrayTag(byteArrayTag.getName(), byteArrayTag.getValue());
@@ -215,7 +197,7 @@ public class ItemTranslator {
return null;
}
- private static com.nukkitx.nbt.tag.CompoundTag translateToBedrockNBT(CompoundTag tag) {
+ private com.nukkitx.nbt.tag.CompoundTag translateToBedrockNBT(CompoundTag tag) {
Map> javaValue = new HashMap>();
if (tag.getValue() != null && !tag.getValue().isEmpty()) {
for (String str : tag.getValue().keySet()) {
@@ -232,7 +214,7 @@ public class ItemTranslator {
return bedrockTag;
}
- private static com.nukkitx.nbt.tag.Tag translateToBedrockNBT(Tag tag) {
+ private com.nukkitx.nbt.tag.Tag translateToBedrockNBT(Tag tag) {
if (tag instanceof ByteArrayTag) {
ByteArrayTag byteArrayTag = (ByteArrayTag) tag;
return new com.nukkitx.nbt.tag.ByteArrayTag(byteArrayTag.getName(), byteArrayTag.getValue());
diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/item/StoneType.java b/connector/src/main/java/org/geysermc/connector/network/translators/item/StoneType.java
deleted file mode 100644
index 0fc7e122..00000000
--- a/connector/src/main/java/org/geysermc/connector/network/translators/item/StoneType.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.geysermc.connector.network.translators.item;
-
-import lombok.Getter;
-
-public enum StoneType {
-
- STONE,
- GRANITE,
- POLISHED_GRANITE,
- DIORITE,
- POLISHED_DIORITE,
- ANDESITE,
- POLISHED_ANDESITE;
-
- @Getter
- private final int id = ordinal();
-
- public String getName() {
- return name().toLowerCase();
- }
-}
diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/item/WoodType.java b/connector/src/main/java/org/geysermc/connector/network/translators/item/WoodType.java
deleted file mode 100644
index 5bfe38b2..00000000
--- a/connector/src/main/java/org/geysermc/connector/network/translators/item/WoodType.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.geysermc.connector.network.translators.item;
-
-import lombok.Getter;
-
-public enum WoodType {
-
- OAK,
- SPRUCE,
- BIRCH,
- JUNGLE,
- ACACIA,
- DARK_OAK;
-
- @Getter
- private final int id = ordinal();
-
- public String getName() {
- return name().toLowerCase();
- }
-}
diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/item/block/ColoredBlock.java b/connector/src/main/java/org/geysermc/connector/network/translators/item/block/ColoredBlock.java
new file mode 100644
index 00000000..c1686eae
--- /dev/null
+++ b/connector/src/main/java/org/geysermc/connector/network/translators/item/block/ColoredBlock.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2019 GeyserMC. http://geysermc.org
+ *
+ * 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:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.connector.network.translators.item.block;
+
+public enum ColoredBlock {
+
+ BANNER,
+ CARPET,
+ CONCRETE,
+ CONCRETE_POWDER,
+ DYE,
+ SHULKER_BOX,
+ STAINED_GLASS,
+ STAINED_GLASS_PANE,
+ TERRACOTTA,
+ WOOL,
+
+}
diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/item/block/WoodBlock.java b/connector/src/main/java/org/geysermc/connector/network/translators/item/block/WoodBlock.java
new file mode 100644
index 00000000..0684cf3f
--- /dev/null
+++ b/connector/src/main/java/org/geysermc/connector/network/translators/item/block/WoodBlock.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019 GeyserMC. http://geysermc.org
+ *
+ * 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:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.connector.network.translators.item.block;
+
+public enum WoodBlock {
+
+ BOAT,
+ FENCE,
+ LEAVES,
+ LOG,
+ PLANKS,
+ SAPLING,
+ SLAB,
+
+}
diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/item/type/DyeColor.java b/connector/src/main/java/org/geysermc/connector/network/translators/item/type/DyeColor.java
new file mode 100644
index 00000000..1d794d71
--- /dev/null
+++ b/connector/src/main/java/org/geysermc/connector/network/translators/item/type/DyeColor.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2019 GeyserMC. http://geysermc.org
+ *
+ * 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:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.connector.network.translators.item.type;
+
+import lombok.Getter;
+
+public enum DyeColor {
+
+ WHITE,
+ ORANGE,
+ MAGENTA,
+ LIGHT_BLUE,
+ YELLOW,
+ LIME,
+ PINK,
+ GRAY,
+ LIGHT_GRAY,
+ CYAN,
+ PURPLE,
+ BLUE,
+ BROWN,
+ GREEN,
+ RED,
+ BLACK;
+
+ @Getter
+ private final int id = ordinal();
+
+ public String getName() {
+ return name().toLowerCase();
+ }
+}
diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/item/type/StoneType.java b/connector/src/main/java/org/geysermc/connector/network/translators/item/type/StoneType.java
new file mode 100644
index 00000000..7888bd60
--- /dev/null
+++ b/connector/src/main/java/org/geysermc/connector/network/translators/item/type/StoneType.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2019 GeyserMC. http://geysermc.org
+ *
+ * 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:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.connector.network.translators.item.type;
+
+import lombok.Getter;
+
+public enum StoneType {
+
+ STONE,
+ GRANITE,
+ POLISHED_GRANITE,
+ DIORITE,
+ POLISHED_DIORITE,
+ ANDESITE,
+ POLISHED_ANDESITE;
+
+ @Getter
+ private final int id = ordinal();
+
+ public String getName() {
+ return name().toLowerCase();
+ }
+}
diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/item/type/WoodType.java b/connector/src/main/java/org/geysermc/connector/network/translators/item/type/WoodType.java
new file mode 100644
index 00000000..d490f3f5
--- /dev/null
+++ b/connector/src/main/java/org/geysermc/connector/network/translators/item/type/WoodType.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2019 GeyserMC. http://geysermc.org
+ *
+ * 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:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.connector.network.translators.item.type;
+
+import lombok.Getter;
+
+public enum WoodType {
+
+ OAK,
+ SPRUCE,
+ BIRCH,
+ JUNGLE,
+ ACACIA,
+ DARK_OAK;
+
+ @Getter
+ private final int id = ordinal();
+
+ public String getName() {
+ return name().toLowerCase();
+ }
+}
diff --git a/connector/src/main/java/org/geysermc/connector/utils/RemapUtils.java b/connector/src/main/java/org/geysermc/connector/utils/RemapUtils.java
deleted file mode 100644
index 57b348ea..00000000
--- a/connector/src/main/java/org/geysermc/connector/utils/RemapUtils.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package org.geysermc.connector.utils;
-
-import org.geysermc.connector.network.translators.item.*;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.jar.JarEntry;
-
-class RemapUtils {
- private static final String MINECRAFT = "minecraft:";
-
- static void start() {
- //colors
- Remapper.predicates.put((x) -> x.getF().contains("white"), (x, y) -> {
- //System.out.println(x.getIdentifier());
- if(customColorIfNeeded(y)) return;
-
- if (y.getIdentifier().replaceAll("terracotta", "stained_hardened_clay")
- .replaceAll("white_", "")
- .equalsIgnoreCase(x.getIdentifier()) && x.getData() == 0) {
-
- for (DyeColor dyeColor : DyeColor.values()) {
- JavaItem j = new JavaItem(y.getIdentifier().replaceAll("white", dyeColor.getName()), y.getId() + dyeColor.getId());
- Remapper.convertions.computeIfAbsent(j, (q) -> new ArrayList<>());
- Remapper.convertions.get(j).add(new BedrockItem(x.getIdentifier(), x.getId(), dyeColor.getId()));
- }
- }
-
- });
- //stone
- Remapper.predicates.put((x) -> x.getF().contains("stone"), (x, y) -> {
- //System.out.println(x.getIdentifier());
- if(customStoneIfNeeded(y)) return;
-
- if (y.getIdentifier().replaceAll("stone_", "")
- .equalsIgnoreCase(x.getIdentifier()) && x.getData() == 0) {
-
- /*for (WoodType woodType : WoodType.values()) {
- JavaItem j = new JavaItem(y.getIdentifier().replaceAll("oak", woodType.getName()), y.getId());
- Remapper.convertions.computeIfAbsent(j, (q) -> new ArrayList<>());
- Remapper.convertions.get(j).add(new BedrockItem(x.getIdentifier(), x.getId(), woodType.getId()));
- }*/
- }
-
- });
- //shared name
- Remapper.predicates.put((x) -> x.getF().equalsIgnoreCase(x.getS()), (x, y) -> {
- try {
- Remapper.convertions.computeIfAbsent(y, (q) -> new ArrayList<>());
- Remapper.convertions.get(y).add(x);
- } catch (Exception e) {
- //
- }
- });
- //wood
- Remapper.predicates.put((x) -> x.getF().contains("oak"), (x, y) -> {
- //System.out.println(x.getIdentifier());
- if(customWoodIfNeeded(y)) return;
-
- if (y.getIdentifier().replaceAll("oak_", "")
- .equalsIgnoreCase(x.getIdentifier()) && x.getData() == 0) {
-
- for (WoodType woodType : WoodType.values()) {
- JavaItem j = new JavaItem(y.getIdentifier().replaceAll("oak", woodType.getName()), y.getId() + woodType.getId());
- Remapper.convertions.computeIfAbsent(j, (q) -> new ArrayList<>());
- Remapper.convertions.get(j).add(new BedrockItem(x.getIdentifier(), x.getId(), woodType.getId()));
- }
- }
-
- });
- }
-
- private static boolean customColorIfNeeded(JavaItem j) {
- if(j.getIdentifier().equalsIgnoreCase(MINECRAFT + "shulker_box")) {
- Remapper.convertions.put(j, Arrays.asList(new BedrockItem(MINECRAFT + "undyed_shulker_box", 205, 0)));
- return true;
- }
- return false;
- }
-
- private static boolean customWoodIfNeeded(JavaItem j) {
- if(j.getIdentifier().contains("fence_gate")) return true;
- for(WoodType t : WoodType.values()) {
- if (j.getIdentifier().equalsIgnoreCase(MINECRAFT + "stripped_" + t.getName() +"_wood")) {
- Remapper.convertions.put(j, Arrays.asList(new BedrockItem(MINECRAFT + "wood", 467, t.getId() + 8)));
- return false;
- }
- }
- return false;
- }
-
- private static boolean customStoneIfNeeded(JavaItem j) {
- if (j.getIdentifier().equalsIgnoreCase(MINECRAFT + "stone")) {
- for (StoneType type : StoneType.values()) {
- Remapper.convertions.put(new JavaItem(MINECRAFT + type.getName(), type.getId() + 1), Arrays.asList(new BedrockItem(MINECRAFT + "stone", 1, type.getId())));
- }
- return true;
- }
- return false;
- }
-}
diff --git a/connector/src/main/java/org/geysermc/connector/utils/Remapper.java b/connector/src/main/java/org/geysermc/connector/utils/Remapper.java
index 9e0ebf0a..4676dec2 100644
--- a/connector/src/main/java/org/geysermc/connector/utils/Remapper.java
+++ b/connector/src/main/java/org/geysermc/connector/utils/Remapper.java
@@ -1,177 +1,121 @@
package org.geysermc.connector.utils;
-import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.ObjectWriter;
+import com.github.steveice10.mc.protocol.data.game.entity.metadata.ItemStack;
+import com.nukkitx.protocol.bedrock.data.ItemData;
import org.geysermc.connector.network.translators.item.BedrockItem;
-import org.geysermc.connector.network.translators.item.DyeColor;
import org.geysermc.connector.network.translators.item.JavaItem;
-import org.geysermc.connector.network.translators.item.StoneType;
-import org.geysermc.connector.network.translators.item.WoodType;
+import org.geysermc.connector.network.translators.item.block.ColoredBlock;
+import org.geysermc.connector.network.translators.item.type.DyeColor;
+import org.geysermc.connector.network.translators.item.type.StoneType;
+import org.geysermc.connector.network.translators.item.block.WoodBlock;
+import org.geysermc.connector.network.translators.item.type.WoodType;
-import java.io.File;
-import java.util.*;
-import java.util.function.BiConsumer;
-import java.util.function.Predicate;
+import java.util.HashMap;
+import java.util.Map;
public class Remapper {
- static final Map> convertions = new HashMap<>();
- static final Map>, BiConsumer> predicates = new LinkedHashMap<>();
+ public static final String MINECRAFT = "minecraft:";
- private static List specials = new ArrayList<>();
+ public static final Remapper ITEM_REMAPPER = new Remapper();
+ public static final Remapper BLOCK_REMAPPER = new Remapper();
- public static Map