mirror of
https://github.com/GeyserMC/Geyser.git
synced 2024-08-14 23:57:35 +00:00
Change default protocol version to 422 (#1640)
* Change default protocol version to 422 * Update Protocol * Actually update to Protocol 2.6.1-SNAPSHOT * Keep languages commit the same
This commit is contained in:
parent
3bcdf4cca1
commit
8e274daa75
11 changed files with 59 additions and 40 deletions
|
@ -31,16 +31,27 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.CloudburstMC.Protocol</groupId>
|
<groupId>com.github.CloudburstMC.Protocol</groupId>
|
||||||
<artifactId>bedrock-v419</artifactId>
|
<artifactId>bedrock-v422</artifactId>
|
||||||
<version>ce59d39118</version>
|
<version>87d862d69d</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
<groupId>net.sf.trove4j</groupId>
|
<groupId>net.sf.trove4j</groupId>
|
||||||
<artifactId>trove</artifactId>
|
<artifactId>trove</artifactId>
|
||||||
</exclusion>
|
</exclusion>
|
||||||
|
<!-- Stay on the older version of Network while it's rewritten -->
|
||||||
|
<exclusion>
|
||||||
|
<groupId>com.nukkitx.network</groupId>
|
||||||
|
<artifactId>raknet</artifactId>
|
||||||
|
</exclusion>
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.nukkitx.network</groupId>
|
||||||
|
<artifactId>raknet</artifactId>
|
||||||
|
<version>1.6.20</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.nukkitx.fastutil</groupId>
|
<groupId>com.nukkitx.fastutil</groupId>
|
||||||
<artifactId>fastutil-int-int-maps</artifactId>
|
<artifactId>fastutil-int-int-maps</artifactId>
|
||||||
|
|
|
@ -27,6 +27,7 @@ package org.geysermc.connector.network;
|
||||||
|
|
||||||
import com.nukkitx.protocol.bedrock.BedrockPacketCodec;
|
import com.nukkitx.protocol.bedrock.BedrockPacketCodec;
|
||||||
import com.nukkitx.protocol.bedrock.v419.Bedrock_v419;
|
import com.nukkitx.protocol.bedrock.v419.Bedrock_v419;
|
||||||
|
import com.nukkitx.protocol.bedrock.v422.Bedrock_v422;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -39,22 +40,17 @@ public class BedrockProtocol {
|
||||||
* Default Bedrock codec that should act as a fallback. Should represent the latest available
|
* Default Bedrock codec that should act as a fallback. Should represent the latest available
|
||||||
* release of the game that Geyser supports.
|
* release of the game that Geyser supports.
|
||||||
*/
|
*/
|
||||||
public static final BedrockPacketCodec DEFAULT_BEDROCK_CODEC = Bedrock_v419.V419_CODEC;
|
public static final BedrockPacketCodec DEFAULT_BEDROCK_CODEC = Bedrock_v422.V422_CODEC;
|
||||||
/**
|
/**
|
||||||
* A list of all supported Bedrock versions that can join Geyser
|
* A list of all supported Bedrock versions that can join Geyser
|
||||||
*/
|
*/
|
||||||
public static final List<BedrockPacketCodec> SUPPORTED_BEDROCK_CODECS = new ArrayList<>();
|
public static final List<BedrockPacketCodec> SUPPORTED_BEDROCK_CODECS = new ArrayList<>();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC.toBuilder()
|
SUPPORTED_BEDROCK_CODECS.add(Bedrock_v419.V419_CODEC.toBuilder()
|
||||||
.minecraftVersion("1.16.100/1.16.101") // We change this as 1.16.100.60 (beta) crashes with Geyser
|
.minecraftVersion("1.16.100/1.16.101") // We change this as 1.16.100.60 is a beta
|
||||||
.build()
|
.build());
|
||||||
);
|
SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC);
|
||||||
SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC.toBuilder()
|
|
||||||
.protocolVersion(422)
|
|
||||||
.minecraftVersion("1.16.200.56")
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -82,7 +82,9 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
|
||||||
ResourcePacksInfoPacket resourcePacksInfo = new ResourcePacksInfoPacket();
|
ResourcePacksInfoPacket resourcePacksInfo = new ResourcePacksInfoPacket();
|
||||||
for(ResourcePack resourcePack : ResourcePack.PACKS.values()) {
|
for(ResourcePack resourcePack : ResourcePack.PACKS.values()) {
|
||||||
ResourcePackManifest.Header header = resourcePack.getManifest().getHeader();
|
ResourcePackManifest.Header header = resourcePack.getManifest().getHeader();
|
||||||
resourcePacksInfo.getResourcePackInfos().add(new ResourcePacksInfoPacket.Entry(header.getUuid().toString(), header.getVersionString(), resourcePack.getFile().length(), "", "", "", false));
|
resourcePacksInfo.getResourcePackInfos().add(new ResourcePacksInfoPacket.Entry(
|
||||||
|
header.getUuid().toString(), header.getVersionString(), resourcePack.getFile().length(),
|
||||||
|
"", "", "", false, false));
|
||||||
}
|
}
|
||||||
resourcePacksInfo.setForcedToAccept(GeyserConnector.getInstance().getConfig().isForceResourcePacks());
|
resourcePacksInfo.setForcedToAccept(GeyserConnector.getInstance().getConfig().isForceResourcePacks());
|
||||||
session.sendUpstreamPacket(resourcePacksInfo);
|
session.sendUpstreamPacket(resourcePacksInfo);
|
||||||
|
|
|
@ -67,10 +67,9 @@ import org.geysermc.connector.GeyserConnector;
|
||||||
import org.geysermc.connector.command.CommandSender;
|
import org.geysermc.connector.command.CommandSender;
|
||||||
import org.geysermc.connector.common.AuthType;
|
import org.geysermc.connector.common.AuthType;
|
||||||
import org.geysermc.connector.entity.Entity;
|
import org.geysermc.connector.entity.Entity;
|
||||||
import org.geysermc.connector.entity.player.SkullPlayerEntity;
|
|
||||||
import org.geysermc.connector.entity.player.SessionPlayerEntity;
|
import org.geysermc.connector.entity.player.SessionPlayerEntity;
|
||||||
|
import org.geysermc.connector.entity.player.SkullPlayerEntity;
|
||||||
import org.geysermc.connector.inventory.PlayerInventory;
|
import org.geysermc.connector.inventory.PlayerInventory;
|
||||||
import org.geysermc.connector.network.translators.chat.MessageTranslator;
|
|
||||||
import org.geysermc.connector.network.remote.RemoteServer;
|
import org.geysermc.connector.network.remote.RemoteServer;
|
||||||
import org.geysermc.connector.network.session.auth.AuthData;
|
import org.geysermc.connector.network.session.auth.AuthData;
|
||||||
import org.geysermc.connector.network.session.auth.BedrockClientData;
|
import org.geysermc.connector.network.session.auth.BedrockClientData;
|
||||||
|
@ -78,6 +77,7 @@ import org.geysermc.connector.network.session.cache.*;
|
||||||
import org.geysermc.connector.network.translators.BiomeTranslator;
|
import org.geysermc.connector.network.translators.BiomeTranslator;
|
||||||
import org.geysermc.connector.network.translators.EntityIdentifierRegistry;
|
import org.geysermc.connector.network.translators.EntityIdentifierRegistry;
|
||||||
import org.geysermc.connector.network.translators.PacketTranslatorRegistry;
|
import org.geysermc.connector.network.translators.PacketTranslatorRegistry;
|
||||||
|
import org.geysermc.connector.network.translators.chat.MessageTranslator;
|
||||||
import org.geysermc.connector.network.translators.collision.CollisionManager;
|
import org.geysermc.connector.network.translators.collision.CollisionManager;
|
||||||
import org.geysermc.connector.network.translators.inventory.EnchantmentInventoryTranslator;
|
import org.geysermc.connector.network.translators.inventory.EnchantmentInventoryTranslator;
|
||||||
import org.geysermc.connector.network.translators.item.ItemRegistry;
|
import org.geysermc.connector.network.translators.item.ItemRegistry;
|
||||||
|
@ -354,6 +354,9 @@ public class GeyserSession implements CommandSender {
|
||||||
startGame();
|
startGame();
|
||||||
this.remoteServer = remoteServer;
|
this.remoteServer = remoteServer;
|
||||||
|
|
||||||
|
// Set the hardcoded shield ID to the ID we just defined in StartGamePacket
|
||||||
|
upstream.getSession().getHardcodedBlockingId().set(ItemRegistry.SHIELD.getBedrockId());
|
||||||
|
|
||||||
ChunkUtils.sendEmptyChunks(this, playerEntity.getPosition().toInt(), 0, false);
|
ChunkUtils.sendEmptyChunks(this, playerEntity.getPosition().toInt(), 0, false);
|
||||||
|
|
||||||
BiomeDefinitionListPacket biomeDefinitionListPacket = new BiomeDefinitionListPacket();
|
BiomeDefinitionListPacket biomeDefinitionListPacket = new BiomeDefinitionListPacket();
|
||||||
|
|
|
@ -47,9 +47,7 @@ import org.geysermc.connector.network.translators.item.ItemTranslator;
|
||||||
import org.geysermc.connector.utils.InventoryUtils;
|
import org.geysermc.connector.utils.InventoryUtils;
|
||||||
import org.geysermc.connector.utils.LocaleUtils;
|
import org.geysermc.connector.utils.LocaleUtils;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A temporary reconstruction of the enchantment table UI until our inventory rewrite is complete.
|
* A temporary reconstruction of the enchantment table UI until our inventory rewrite is complete.
|
||||||
|
@ -100,11 +98,11 @@ public class EnchantmentInventoryTranslator extends BlockInventoryTranslator {
|
||||||
@Override
|
@Override
|
||||||
public void updateInventory(GeyserSession session, Inventory inventory) {
|
public void updateInventory(GeyserSession session, Inventory inventory) {
|
||||||
super.updateInventory(session, inventory);
|
super.updateInventory(session, inventory);
|
||||||
ItemData[] items = new ItemData[5];
|
List<ItemData> items = new ArrayList<>(5);
|
||||||
items[0] = ItemTranslator.translateToBedrock(session, inventory.getItem(0));
|
items.add(ItemTranslator.translateToBedrock(session, inventory.getItem(0)));
|
||||||
items[1] = ItemTranslator.translateToBedrock(session, inventory.getItem(1));
|
items.add(ItemTranslator.translateToBedrock(session, inventory.getItem(1)));
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
items[i + 2] = session.getEnchantmentSlotData()[i].getItem() != null ? session.getEnchantmentSlotData()[i].getItem() : createEnchantmentBook();
|
items.add(session.getEnchantmentSlotData()[i].getItem() != null ? session.getEnchantmentSlotData()[i].getItem() : createEnchantmentBook());
|
||||||
}
|
}
|
||||||
|
|
||||||
InventoryContentPacket contentPacket = new InventoryContentPacket();
|
InventoryContentPacket contentPacket = new InventoryContentPacket();
|
||||||
|
|
|
@ -41,6 +41,8 @@ import org.geysermc.connector.network.translators.item.ItemTranslator;
|
||||||
import org.geysermc.connector.utils.InventoryUtils;
|
import org.geysermc.connector.utils.InventoryUtils;
|
||||||
import org.geysermc.connector.utils.LanguageUtils;
|
import org.geysermc.connector.utils.LanguageUtils;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class PlayerInventoryTranslator extends InventoryTranslator {
|
public class PlayerInventoryTranslator extends InventoryTranslator {
|
||||||
|
@ -65,7 +67,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
|
||||||
for (int i = 36; i < 45; i++) {
|
for (int i = 36; i < 45; i++) {
|
||||||
contents[i - 36] = ItemTranslator.translateToBedrock(session, inventory.getItem(i));
|
contents[i - 36] = ItemTranslator.translateToBedrock(session, inventory.getItem(i));
|
||||||
}
|
}
|
||||||
inventoryContentPacket.setContents(contents);
|
inventoryContentPacket.setContents(Arrays.asList(contents));
|
||||||
session.sendUpstreamPacket(inventoryContentPacket);
|
session.sendUpstreamPacket(inventoryContentPacket);
|
||||||
|
|
||||||
// Armor
|
// Armor
|
||||||
|
@ -75,13 +77,13 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
|
||||||
for (int i = 5; i < 9; i++) {
|
for (int i = 5; i < 9; i++) {
|
||||||
contents[i - 5] = ItemTranslator.translateToBedrock(session, inventory.getItem(i));
|
contents[i - 5] = ItemTranslator.translateToBedrock(session, inventory.getItem(i));
|
||||||
}
|
}
|
||||||
armorContentPacket.setContents(contents);
|
armorContentPacket.setContents(Arrays.asList(contents));
|
||||||
session.sendUpstreamPacket(armorContentPacket);
|
session.sendUpstreamPacket(armorContentPacket);
|
||||||
|
|
||||||
// Offhand
|
// Offhand
|
||||||
InventoryContentPacket offhandPacket = new InventoryContentPacket();
|
InventoryContentPacket offhandPacket = new InventoryContentPacket();
|
||||||
offhandPacket.setContainerId(ContainerId.OFFHAND);
|
offhandPacket.setContainerId(ContainerId.OFFHAND);
|
||||||
offhandPacket.setContents(new ItemData[]{ItemTranslator.translateToBedrock(session, inventory.getItem(45))});
|
offhandPacket.setContents(Collections.singletonList(ItemTranslator.translateToBedrock(session, inventory.getItem(45))));
|
||||||
session.sendUpstreamPacket(offhandPacket);
|
session.sendUpstreamPacket(offhandPacket);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,7 +132,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
|
||||||
} else if (slot == 45) {
|
} else if (slot == 45) {
|
||||||
InventoryContentPacket offhandPacket = new InventoryContentPacket();
|
InventoryContentPacket offhandPacket = new InventoryContentPacket();
|
||||||
offhandPacket.setContainerId(ContainerId.OFFHAND);
|
offhandPacket.setContainerId(ContainerId.OFFHAND);
|
||||||
offhandPacket.setContents(new ItemData[]{ItemTranslator.translateToBedrock(session, inventory.getItem(slot))});
|
offhandPacket.setContents(Collections.singletonList(ItemTranslator.translateToBedrock(session, inventory.getItem(slot))));
|
||||||
session.sendUpstreamPacket(offhandPacket);
|
session.sendUpstreamPacket(offhandPacket);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,9 @@ import org.geysermc.connector.network.translators.item.ItemTranslator;
|
||||||
import org.geysermc.connector.utils.InventoryUtils;
|
import org.geysermc.connector.utils.InventoryUtils;
|
||||||
import org.geysermc.connector.utils.LanguageUtils;
|
import org.geysermc.connector.utils.LanguageUtils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class ChestInventoryUpdater extends InventoryUpdater {
|
public class ChestInventoryUpdater extends InventoryUpdater {
|
||||||
private static final ItemData UNUSUABLE_SPACE_BLOCK = InventoryUtils.createUnusableSpaceBlock(LanguageUtils.getLocaleStringLog("geyser.inventory.unusable_item.slot"));
|
private static final ItemData UNUSUABLE_SPACE_BLOCK = InventoryUtils.createUnusableSpaceBlock(LanguageUtils.getLocaleStringLog("geyser.inventory.unusable_item.slot"));
|
||||||
|
@ -46,12 +49,12 @@ public class ChestInventoryUpdater extends InventoryUpdater {
|
||||||
public void updateInventory(InventoryTranslator translator, GeyserSession session, Inventory inventory) {
|
public void updateInventory(InventoryTranslator translator, GeyserSession session, Inventory inventory) {
|
||||||
super.updateInventory(translator, session, inventory);
|
super.updateInventory(translator, session, inventory);
|
||||||
|
|
||||||
ItemData[] bedrockItems = new ItemData[paddedSize];
|
List<ItemData> bedrockItems = new ArrayList<>(paddedSize);
|
||||||
for (int i = 0; i < bedrockItems.length; i++) {
|
for (int i = 0; i < paddedSize; i++) {
|
||||||
if (i < translator.size) {
|
if (i < translator.size) {
|
||||||
bedrockItems[i] = ItemTranslator.translateToBedrock(session, inventory.getItem(i));
|
bedrockItems.add(ItemTranslator.translateToBedrock(session, inventory.getItem(i)));
|
||||||
} else {
|
} else {
|
||||||
bedrockItems[i] = UNUSUABLE_SPACE_BLOCK;
|
bedrockItems.add(UNUSUABLE_SPACE_BLOCK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,8 @@ import org.geysermc.connector.network.session.GeyserSession;
|
||||||
import org.geysermc.connector.network.translators.inventory.InventoryTranslator;
|
import org.geysermc.connector.network.translators.inventory.InventoryTranslator;
|
||||||
import org.geysermc.connector.network.translators.item.ItemTranslator;
|
import org.geysermc.connector.network.translators.item.ItemTranslator;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class ContainerInventoryUpdater extends InventoryUpdater {
|
public class ContainerInventoryUpdater extends InventoryUpdater {
|
||||||
@Override
|
@Override
|
||||||
public void updateInventory(InventoryTranslator translator, GeyserSession session, Inventory inventory) {
|
public void updateInventory(InventoryTranslator translator, GeyserSession session, Inventory inventory) {
|
||||||
|
@ -45,7 +47,7 @@ public class ContainerInventoryUpdater extends InventoryUpdater {
|
||||||
|
|
||||||
InventoryContentPacket contentPacket = new InventoryContentPacket();
|
InventoryContentPacket contentPacket = new InventoryContentPacket();
|
||||||
contentPacket.setContainerId(inventory.getId());
|
contentPacket.setContainerId(inventory.getId());
|
||||||
contentPacket.setContents(bedrockItems);
|
contentPacket.setContents(Arrays.asList(bedrockItems));
|
||||||
session.sendUpstreamPacket(contentPacket);
|
session.sendUpstreamPacket(contentPacket);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,8 @@ import org.geysermc.connector.network.session.GeyserSession;
|
||||||
import org.geysermc.connector.network.translators.inventory.InventoryTranslator;
|
import org.geysermc.connector.network.translators.inventory.InventoryTranslator;
|
||||||
import org.geysermc.connector.network.translators.item.ItemTranslator;
|
import org.geysermc.connector.network.translators.item.ItemTranslator;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
public abstract class InventoryUpdater {
|
public abstract class InventoryUpdater {
|
||||||
public void updateInventory(InventoryTranslator translator, GeyserSession session, Inventory inventory) {
|
public void updateInventory(InventoryTranslator translator, GeyserSession session, Inventory inventory) {
|
||||||
ItemData[] bedrockItems = new ItemData[36];
|
ItemData[] bedrockItems = new ItemData[36];
|
||||||
|
@ -43,7 +45,7 @@ public abstract class InventoryUpdater {
|
||||||
}
|
}
|
||||||
InventoryContentPacket contentPacket = new InventoryContentPacket();
|
InventoryContentPacket contentPacket = new InventoryContentPacket();
|
||||||
contentPacket.setContainerId(ContainerId.INVENTORY);
|
contentPacket.setContainerId(ContainerId.INVENTORY);
|
||||||
contentPacket.setContents(bedrockItems);
|
contentPacket.setContents(Arrays.asList(bedrockItems));
|
||||||
session.sendUpstreamPacket(contentPacket);
|
session.sendUpstreamPacket(contentPacket);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -164,19 +164,19 @@ public class RecipeRegistry {
|
||||||
letterToRecipe.put(entry.getKey(), ItemRegistry.getBedrockItemFromJson(entry.getValue()));
|
letterToRecipe.put(entry.getKey(), ItemRegistry.getBedrockItemFromJson(entry.getValue()));
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemData[] inputs = new ItemData[shape.size() * shape.get(0).length()];
|
List<ItemData> inputs = new ArrayList<>(shape.size() * shape.get(0).length());
|
||||||
int i = 0;
|
int i = 0;
|
||||||
// Create a linear array of items from the "cube" of the shape
|
// Create a linear array of items from the "cube" of the shape
|
||||||
for (int j = 0; i < shape.size() * shape.get(0).length(); j++) {
|
for (int j = 0; i < shape.size() * shape.get(0).length(); j++) {
|
||||||
for (char c : shape.get(j).toCharArray()) {
|
for (char c : shape.get(j).toCharArray()) {
|
||||||
ItemData data = letterToRecipe.getOrDefault(String.valueOf(c), ItemData.AIR);
|
ItemData data = letterToRecipe.getOrDefault(String.valueOf(c), ItemData.AIR);
|
||||||
inputs[i] = data;
|
inputs.add(data);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return CraftingData.fromShaped(uuid.toString(), shape.get(0).length(), shape.size(),
|
return CraftingData.fromShaped(uuid.toString(), shape.get(0).length(), shape.size(),
|
||||||
inputs, new ItemData[]{output}, uuid, "crafting_table", 0, LAST_RECIPE_NET_ID++);
|
inputs, Collections.singletonList(output), uuid, "crafting_table", 0, LAST_RECIPE_NET_ID++);
|
||||||
}
|
}
|
||||||
List<ItemData> inputs = new ObjectArrayList<>();
|
List<ItemData> inputs = new ObjectArrayList<>();
|
||||||
for (JsonNode entry : node.get("input")) {
|
for (JsonNode entry : node.get("input")) {
|
||||||
|
@ -185,10 +185,10 @@ public class RecipeRegistry {
|
||||||
if (node.get("type").asInt() == 5) {
|
if (node.get("type").asInt() == 5) {
|
||||||
// Shulker box
|
// Shulker box
|
||||||
return CraftingData.fromShulkerBox(uuid.toString(),
|
return CraftingData.fromShulkerBox(uuid.toString(),
|
||||||
inputs.toArray(new ItemData[0]), new ItemData[]{output}, uuid, "crafting_table", 0, LAST_RECIPE_NET_ID++);
|
inputs, Collections.singletonList(output), uuid, "crafting_table", 0, LAST_RECIPE_NET_ID++);
|
||||||
}
|
}
|
||||||
return CraftingData.fromShapeless(uuid.toString(),
|
return CraftingData.fromShapeless(uuid.toString(),
|
||||||
inputs.toArray(new ItemData[0]), new ItemData[]{output}, uuid, "crafting_table", 0, LAST_RECIPE_NET_ID++);
|
inputs, Collections.singletonList(output), uuid, "crafting_table", 0, LAST_RECIPE_NET_ID++);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void init() {
|
public static void init() {
|
||||||
|
|
|
@ -65,7 +65,7 @@ public class JavaDeclareRecipesTranslator extends PacketTranslator<ServerDeclare
|
||||||
for (ItemData[] inputs : inputCombinations) {
|
for (ItemData[] inputs : inputCombinations) {
|
||||||
UUID uuid = UUID.randomUUID();
|
UUID uuid = UUID.randomUUID();
|
||||||
craftingDataPacket.getCraftingData().add(CraftingData.fromShapeless(uuid.toString(),
|
craftingDataPacket.getCraftingData().add(CraftingData.fromShapeless(uuid.toString(),
|
||||||
inputs, new ItemData[]{output}, uuid, "crafting_table", 0, networkId++));
|
Arrays.asList(inputs), Collections.singletonList(output), uuid, "crafting_table", 0, networkId++));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -77,8 +77,8 @@ public class JavaDeclareRecipesTranslator extends PacketTranslator<ServerDeclare
|
||||||
for (ItemData[] inputs : inputCombinations) {
|
for (ItemData[] inputs : inputCombinations) {
|
||||||
UUID uuid = UUID.randomUUID();
|
UUID uuid = UUID.randomUUID();
|
||||||
craftingDataPacket.getCraftingData().add(CraftingData.fromShaped(uuid.toString(),
|
craftingDataPacket.getCraftingData().add(CraftingData.fromShaped(uuid.toString(),
|
||||||
shapedRecipeData.getWidth(), shapedRecipeData.getHeight(), inputs,
|
shapedRecipeData.getWidth(), shapedRecipeData.getHeight(), Arrays.asList(inputs),
|
||||||
new ItemData[]{output}, uuid, "crafting_table", 0, networkId++));
|
Collections.singletonList(output), uuid, "crafting_table", 0, networkId++));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue