1. Fabric API’de bir packet nasıl tanımlanır?
Handler içinde
2. KeyBinding nasıl oluşturulup input event’e bağlanır?
Key binding tanımlaması
Bu yöntem input event’in tek seferlik tetiklenmesini sağlar.
3. ScreenHandler ve Screen nasıl ilişkilendirilir?
4. Packet ile GUI açma işlemi nasıl yapılır?
C2S packet’i sunucuya gönderilir, sunucu
5. Network, Input ve GUI tipleri arasındaki ortak arayüz nedir?
Tümü
FabricPacket’i SimpleChannel üzerinden tanımlarsın. Kanalın adı, versiyon ve yönünü (S2C veya C2S) belirle. Örnek:
Kod:
SimpleChannel channel = NetworkRegistry.newChannel(
new Identifier("modid", "channel"),
() -> "1",
s -> true,
s -> true);
channel.registerS2CPacket(MyS2CPacket::write, MyS2CPacket::read, MyS2CPacket::handle);
Handler içinde
world.isClient() ile yön kontrolü yapılır.2. KeyBinding nasıl oluşturulup input event’e bağlanır?
Key binding tanımlaması
KeyBinding sınıfı ile yapılır. Ardından ClientTickEvents.END_CLIENT_TICK içinde client.options.keyBindJump.isPressed() gibi bir kontrol eklenir. Örnek:
Kod:
KeyBinding myKey = new KeyBinding("key.modid.mykey",
InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_K, "category.modid");
ClientTickEvents.END_CLIENT_TICK.register(client -> {
if (myKey.wasPressed()) {
// işlem
}
});
Bu yöntem input event’in tek seferlik tetiklenmesini sağlar.
3. ScreenHandler ve Screen nasıl ilişkilendirilir?
ScreenHandlerType’i ScreenHandlerType.register() ile yarat. ScreenHandler’in canUse ve writeScreenOpeningData metodlarını uygula. Ardından Screen sınıfında ScreenHandler’i çağır. Örnek:
Kod:
public static final ScreenHandlerType<MyScreenHandler> MY_SCREEN = new ScreenHandlerType<>(MyScreenHandler::new, FeatureFlags.VANILLA_FEATURES);
4. Packet ile GUI açma işlemi nasıl yapılır?
C2S packet’i sunucuya gönderilir, sunucu
ScreenHandler yaratır ve PacketByteBuf’a handler’ı yerleştirir. Sonra C2S packet’i işlenir ve minecraftClient.openHandledScreen(handler, buf) ile açılır.5. Network, Input ve GUI tipleri arasındaki ortak arayüz nedir?
Tümü
FabricPacket ve ScreenHandler gibi PacketByteBuf üzerinden veri taşır. Bu yüzden PacketByteBuf’un serialize/deserialize metotları mod tipi egilimini sağlar; aynı API yapısı sayesinde kod tekrarını azaltır.