diff --git a/connector/src/main/java/org/geysermc/connector/event/events/InventoryTranslatorRegistryEvent.java b/connector/src/main/java/org/geysermc/connector/event/events/InventoryTranslatorRegistryEvent.java new file mode 100644 index 00000000000..cc34e14a13c --- /dev/null +++ b/connector/src/main/java/org/geysermc/connector/event/events/InventoryTranslatorRegistryEvent.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2019-2020 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.event.events; + +import com.github.steveice10.mc.protocol.data.game.window.WindowType; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.geysermc.connector.network.translators.inventory.InventoryTranslator; + +import java.util.Map; + +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +public class InventoryTranslatorRegistryEvent extends GeyserEvent { + Map registeredTranslators; +} diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/InventoryTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/InventoryTranslator.java index 7d06aed1404..39f8b15c9fb 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/inventory/InventoryTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/inventory/InventoryTranslator.java @@ -29,6 +29,8 @@ import com.nukkitx.protocol.bedrock.data.inventory.ContainerType; import com.nukkitx.protocol.bedrock.data.inventory.InventoryActionData; import lombok.AllArgsConstructor; +import org.geysermc.connector.event.EventManager; +import org.geysermc.connector.event.events.InventoryTranslatorRegistryEvent; import org.geysermc.connector.inventory.Inventory; import org.geysermc.connector.network.session.GeyserSession; import org.geysermc.connector.network.translators.inventory.updater.ContainerInventoryUpdater; @@ -41,7 +43,8 @@ @AllArgsConstructor public abstract class InventoryTranslator { - public static final Map INVENTORY_TRANSLATORS = new HashMap() { + public static final Map INVENTORY_TRANSLATORS = EventManager.getInstance() + .triggerEvent(new InventoryTranslatorRegistryEvent(new HashMap() { { put(null, new PlayerInventoryTranslator()); //player inventory put(WindowType.GENERIC_9X1, new SingleChestInventoryTranslator(9)); @@ -68,8 +71,7 @@ public abstract class InventoryTranslator { put(WindowType.HOPPER, new BlockInventoryTranslator(5, "minecraft:hopper[enabled=false,facing=down]", ContainerType.HOPPER, containerUpdater)); put(WindowType.SHULKER_BOX, new BlockInventoryTranslator(27, "minecraft:shulker_box[facing=north]", ContainerType.CONTAINER, containerUpdater)); //put(WindowType.BEACON, new BlockInventoryTranslator(1, "minecraft:beacon", ContainerType.BEACON)); //TODO - } - }; + }})).getEvent().getRegisteredTranslators(); public final int size;