mirror of
https://github.com/Minestom/Minestom.git
synced 2024-11-08 03:40:27 +01:00
Fix shaped recipe read (take 2) (#573)
This commit is contained in:
parent
206d93ed1b
commit
627bc14b56
@ -7,6 +7,7 @@ import net.minestom.server.utils.binary.BinaryReader;
|
||||
import net.minestom.server.utils.binary.BinaryWriter;
|
||||
import net.minestom.server.utils.binary.Writeable;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -83,10 +84,26 @@ public record DeclareRecipesPacket(@NotNull List<DeclaredRecipe> recipes) implem
|
||||
ingredients = List.copyOf(ingredients);
|
||||
}
|
||||
|
||||
private DeclaredShapedCraftingRecipe(DeclaredShapedCraftingRecipe packet) {
|
||||
this(packet.recipeId, packet.width, packet.height, packet.group, packet.ingredients, packet.result);
|
||||
}
|
||||
|
||||
public DeclaredShapedCraftingRecipe(BinaryReader reader) {
|
||||
this(reader.readSizedString(), reader.readVarInt(), reader.readVarInt(),
|
||||
reader.readSizedString(), reader.readVarIntList(Ingredient::new),
|
||||
reader.readItemStack());
|
||||
this(read(reader));
|
||||
}
|
||||
|
||||
private static DeclaredShapedCraftingRecipe read(BinaryReader reader) {
|
||||
|
||||
String recipeId = reader.readSizedString();
|
||||
int width = reader.readVarInt();
|
||||
int height = reader.readVarInt();
|
||||
String group = reader.readSizedString();
|
||||
List<Ingredient> ingredients = new ArrayList<>();
|
||||
for (int slot = 0; slot < width * height; slot++) {
|
||||
ingredients.add(new Ingredient(reader));
|
||||
}
|
||||
ItemStack result = reader.readItemStack();
|
||||
return new DeclaredShapedCraftingRecipe(recipeId, width, height, group, ingredients, result);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -87,7 +87,18 @@ public class PacketWriteReadTest {
|
||||
"minecraft:sticks",
|
||||
"sticks",
|
||||
List.of(new Ingredient(List.of(ItemStack.of(Material.OAK_PLANKS)))),
|
||||
ItemStack.of(Material.STICK)))));
|
||||
ItemStack.of(Material.STICK)
|
||||
),
|
||||
new DeclareRecipesPacket.DeclaredShapedCraftingRecipe(
|
||||
"minecraft:torch",
|
||||
1,
|
||||
2,
|
||||
"",
|
||||
List.of(new Ingredient(List.of(ItemStack.of(Material.COAL))),
|
||||
new Ingredient(List.of(ItemStack.of(Material.STICK)))),
|
||||
ItemStack.of(Material.TORCH)
|
||||
))));
|
||||
|
||||
SERVER_PACKETS.add(new DestroyEntitiesPacket(List.of(5, 5, 5)));
|
||||
SERVER_PACKETS.add(new DisconnectPacket(COMPONENT));
|
||||
SERVER_PACKETS.add(new DisplayScoreboardPacket((byte) 5, "scoreboard"));
|
||||
@ -142,7 +153,8 @@ public class PacketWriteReadTest {
|
||||
BinaryReader reader = new BinaryReader(writer.toByteArray());
|
||||
var createdPacket = readerConstructor.newInstance(reader);
|
||||
assertEquals(writeable, createdPacket);
|
||||
} catch (NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException e) {
|
||||
} catch (NoSuchMethodException | InvocationTargetException | InstantiationException
|
||||
| IllegalAccessException e) {
|
||||
fail(writeable.toString(), e);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user