mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-30 04:19:27 +00:00
完成高版本配方映射
This commit is contained in:
@@ -100,6 +100,21 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item<ItemStack> s2c(Item<ItemStack> item, Player player) {
|
||||
return this.networkItemHandler.s2c(item, player).map(it -> {
|
||||
System.out.println("有变化");
|
||||
System.out.println(item.getItem());
|
||||
System.out.println(it.getItem());
|
||||
return it;
|
||||
}).orElse(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item<ItemStack> c2s(Item<ItemStack> item) {
|
||||
return this.networkItemHandler.c2s(item).orElse(item);
|
||||
}
|
||||
|
||||
public Optional<ItemStack> s2c(ItemStack itemStack, Player player) {
|
||||
try {
|
||||
Item<ItemStack> wrapped = wrap(itemStack);
|
||||
|
||||
@@ -173,6 +173,8 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
||||
registerS2CByteBufPacketConsumer(VersionHelper.isOrAbove1_20_3() ? PacketConsumers.TEAM_1_20_3 : PacketConsumers.TEAM_1_20, this.packetIds.clientboundSetPlayerTeamPacket());
|
||||
registerS2CByteBufPacketConsumer(VersionHelper.isOrAbove1_20_3() ? PacketConsumers.SET_OBJECTIVE_1_20_3 : PacketConsumers.SET_OBJECTIVE_1_20, this.packetIds.clientboundSetObjectivePacket());
|
||||
registerS2CByteBufPacketConsumer(PacketConsumers.SET_SCORE_1_20_3, VersionHelper.isOrAbove1_20_3() ? this.packetIds.clientboundSetScorePacket() : -1);
|
||||
registerS2CByteBufPacketConsumer(PacketConsumers.ADD_RECIPE_BOOK, this.packetIds.clientboundRecipeBookAddPacket());
|
||||
registerS2CByteBufPacketConsumer(PacketConsumers.PLACE_GHOST_RECIPE, this.packetIds.clientboundPlaceGhostRecipePacket());
|
||||
registerS2CByteBufPacketConsumer(PacketConsumers.REMOVE_ENTITY, this.packetIds.clientboundRemoveEntitiesPacket());
|
||||
registerS2CByteBufPacketConsumer(PacketConsumers.ADD_ENTITY, this.packetIds.clientboundAddEntityPacket());
|
||||
registerS2CByteBufPacketConsumer(PacketConsumers.SOUND, this.packetIds.clientboundSoundPacket());
|
||||
|
||||
@@ -42,6 +42,9 @@ import net.momirealms.craftengine.core.item.CustomItem;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
|
||||
import net.momirealms.craftengine.core.item.context.UseOnContext;
|
||||
import net.momirealms.craftengine.core.item.recipe.network.RecipeBookDisplayEntry;
|
||||
import net.momirealms.craftengine.core.item.recipe.network.RecipeBookEntry;
|
||||
import net.momirealms.craftengine.core.item.recipe.network.display.RecipeDisplay;
|
||||
import net.momirealms.craftengine.core.pack.host.ResourcePackDownloadData;
|
||||
import net.momirealms.craftengine.core.pack.host.ResourcePackHost;
|
||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||
@@ -2477,4 +2480,40 @@ public class PacketConsumers {
|
||||
CraftEngine.instance().logger().warn("Failed to handle ClientboundLoginFinishedPacket", e);
|
||||
}
|
||||
};
|
||||
|
||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> ADD_RECIPE_BOOK = (user, event) -> {
|
||||
try {
|
||||
FriendlyByteBuf buf = event.getBuffer();
|
||||
List<RecipeBookEntry> entries = buf.readCollection(ArrayList::new, byteBuf -> {
|
||||
RecipeBookEntry entry = RecipeBookEntry.read(byteBuf);
|
||||
entry.applyClientboundData((BukkitServerPlayer) user);
|
||||
return entry;
|
||||
});
|
||||
boolean replace = buf.readBoolean();
|
||||
event.setChanged(true);
|
||||
buf.clear();
|
||||
buf.writeVarInt(event.packetID());
|
||||
buf.writeCollection(entries, ((byteBuf, recipeBookEntry) -> recipeBookEntry.write(byteBuf)));
|
||||
buf.writeBoolean(replace);
|
||||
} catch (Exception e) {
|
||||
CraftEngine.instance().logger().warn("Failed to handle ClientboundRecipeBookAddPacket", e);
|
||||
}
|
||||
};
|
||||
|
||||
public static final BiConsumer<NetWorkUser, ByteBufPacketEvent> PLACE_GHOST_RECIPE = (user, event) -> {
|
||||
try {
|
||||
if (!VersionHelper.isOrAbove1_21_2()) return;
|
||||
FriendlyByteBuf buf = event.getBuffer();
|
||||
int containerId = buf.readContainerId();
|
||||
RecipeDisplay display = RecipeDisplay.read(buf);
|
||||
display.applyClientboundData((BukkitServerPlayer) user);
|
||||
event.setChanged(true);
|
||||
buf.clear();
|
||||
buf.writeVarInt(event.packetID());
|
||||
buf.writeContainerId(containerId);
|
||||
display.write(buf);
|
||||
} catch (Exception e) {
|
||||
CraftEngine.instance().logger().warn("Failed to handle ClientboundPlaceGhostRecipePacket", e);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -54,6 +54,10 @@ public interface PacketIds {
|
||||
|
||||
int clientboundBlockEventPacket();
|
||||
|
||||
int clientboundRecipeBookAddPacket();
|
||||
|
||||
int clientboundPlaceGhostRecipePacket();
|
||||
|
||||
int serverboundContainerClickPacket();
|
||||
|
||||
int serverboundSetCreativeModeSlotPacket();
|
||||
|
||||
@@ -149,4 +149,14 @@ public class PacketIds1_20 implements PacketIds {
|
||||
public int serverboundInteractPacket() {
|
||||
return PacketIdFinder.serverboundByClazz(NetworkReflections.clazz$ServerboundInteractPacket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundRecipeBookAddPacket() {
|
||||
return PacketIdFinder.serverboundByClazz(NetworkReflections.clazz$ClientboundRecipeBookAddPacket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundPlaceGhostRecipePacket() {
|
||||
return PacketIdFinder.serverboundByClazz(NetworkReflections.clazz$ClientboundPlaceGhostRecipePacket);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -134,6 +134,16 @@ public class PacketIds1_20_5 implements PacketIds {
|
||||
return PacketIdFinder.clientboundByName("minecraft:block_event");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundRecipeBookAddPacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:recipe_book_add");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int clientboundPlaceGhostRecipePacket() {
|
||||
return PacketIdFinder.clientboundByName("minecraft:place_ghost_recipe");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int serverboundContainerClickPacket() {
|
||||
return PacketIdFinder.serverboundByName("minecraft:container_click");
|
||||
|
||||
@@ -1566,4 +1566,11 @@ public final class NetworkReflections {
|
||||
"network.protocol.game.ClientboundRecipeBookAddPacket",
|
||||
"network.protocol.game.ClientboundRecipeBookAddPacket"
|
||||
), VersionHelper.isOrAbove1_21_2());
|
||||
|
||||
public static final Class<?> clazz$ClientboundPlaceGhostRecipePacket = requireNonNull(
|
||||
BukkitReflectionUtils.findReobfOrMojmapClass(
|
||||
"network.protocol.game.ClientboundPlaceGhostRecipePacket",
|
||||
"network.protocol.game.ClientboundPlaceGhostRecipePacket"
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user