Mirror von
https://github.com/GeyserMC/Geyser.git
synchronisiert 2024-12-27 08:30:12 +01:00
Protocol 3.0: ContainerType enum and registries (#3470)
* P3 Updates: ContainerType enum and registries * Remove unused math import
Dieser Commit ist enthalten in:
Ursprung
3e778cdb49
Commit
4b847350b6
@ -30,6 +30,7 @@ import lombok.Value;
|
|||||||
import org.cloudburstmc.nbt.NbtList;
|
import org.cloudburstmc.nbt.NbtList;
|
||||||
import org.cloudburstmc.nbt.NbtMap;
|
import org.cloudburstmc.nbt.NbtMap;
|
||||||
import org.cloudburstmc.protocol.bedrock.data.defintions.BlockDefinition;
|
import org.cloudburstmc.protocol.bedrock.data.defintions.BlockDefinition;
|
||||||
|
import org.cloudburstmc.protocol.bedrock.data.defintions.SimpleBlockDefinition;
|
||||||
import org.cloudburstmc.protocol.common.DefinitionRegistry;
|
import org.cloudburstmc.protocol.common.DefinitionRegistry;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -75,6 +76,10 @@ public class BlockMappings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isItemFrame(BlockDefinition definition) {
|
public boolean isItemFrame(BlockDefinition definition) {
|
||||||
return this.itemFrames.containsKey(definition.getRuntimeId());
|
if (definition instanceof SimpleBlockDefinition def) {
|
||||||
|
return this.itemFrames.containsKey(def.getState());
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -75,7 +75,7 @@ public class AnvilInventoryTranslator extends AbstractBlockInventoryTranslator {
|
|||||||
return switch (slotInfoData.getContainer()) {
|
return switch (slotInfoData.getContainer()) {
|
||||||
case ANVIL_INPUT -> 0;
|
case ANVIL_INPUT -> 0;
|
||||||
case ANVIL_MATERIAL -> 1;
|
case ANVIL_MATERIAL -> 1;
|
||||||
case ANVIL_RESULT, CREATIVE_OUTPUT -> 2;
|
case ANVIL_RESULT, CREATED_OUTPUT -> 2;
|
||||||
default -> super.bedrockSlotToJava(slotInfoData);
|
default -> super.bedrockSlotToJava(slotInfoData);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ public class CartographyInventoryTranslator extends AbstractBlockInventoryTransl
|
|||||||
return switch (slotInfoData.getContainer()) {
|
return switch (slotInfoData.getContainer()) {
|
||||||
case CARTOGRAPHY_INPUT -> 0;
|
case CARTOGRAPHY_INPUT -> 0;
|
||||||
case CARTOGRAPHY_ADDITIONAL -> 1;
|
case CARTOGRAPHY_ADDITIONAL -> 1;
|
||||||
case CARTOGRAPHY_RESULT, CREATIVE_OUTPUT -> 2;
|
case CARTOGRAPHY_RESULT, CREATED_OUTPUT -> 2;
|
||||||
default -> super.bedrockSlotToJava(slotInfoData);
|
default -> super.bedrockSlotToJava(slotInfoData);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ public class CraftingInventoryTranslator extends AbstractBlockInventoryTranslato
|
|||||||
// Bedrock is the same, but it starts from 32.
|
// Bedrock is the same, but it starts from 32.
|
||||||
return slotInfoData.getSlot() - 31;
|
return slotInfoData.getSlot() - 31;
|
||||||
}
|
}
|
||||||
if (slotInfoData.getContainer() == ContainerSlotType.CRAFTING_OUTPUT || slotInfoData.getContainer() == ContainerSlotType.CREATIVE_OUTPUT) {
|
if (slotInfoData.getContainer() == ContainerSlotType.CRAFTING_OUTPUT || slotInfoData.getContainer() == ContainerSlotType.CREATED_OUTPUT) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return super.bedrockSlotToJava(slotInfoData);
|
return super.bedrockSlotToJava(slotInfoData);
|
||||||
|
@ -137,7 +137,7 @@ public class EnchantingInventoryTranslator extends AbstractBlockInventoryTransla
|
|||||||
if (slotInfoData.getContainer() == ContainerSlotType.ENCHANTING_INPUT) {
|
if (slotInfoData.getContainer() == ContainerSlotType.ENCHANTING_INPUT) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (slotInfoData.getContainer() == ContainerSlotType.ENCHANTING_LAPIS) {
|
if (slotInfoData.getContainer() == ContainerSlotType.ENCHANTING_MATERIAL) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return super.bedrockSlotToJava(slotInfoData);
|
return super.bedrockSlotToJava(slotInfoData);
|
||||||
@ -149,7 +149,7 @@ public class EnchantingInventoryTranslator extends AbstractBlockInventoryTransla
|
|||||||
return new BedrockContainerSlot(ContainerSlotType.ENCHANTING_INPUT, 14);
|
return new BedrockContainerSlot(ContainerSlotType.ENCHANTING_INPUT, 14);
|
||||||
}
|
}
|
||||||
if (slot == 1) {
|
if (slot == 1) {
|
||||||
return new BedrockContainerSlot(ContainerSlotType.ENCHANTING_LAPIS, 15);
|
return new BedrockContainerSlot(ContainerSlotType.ENCHANTING_MATERIAL, 15);
|
||||||
}
|
}
|
||||||
return super.javaSlotToBedrockContainer(slot);
|
return super.javaSlotToBedrockContainer(slot);
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ public class Generic3X3InventoryTranslator extends AbstractBlockInventoryTransla
|
|||||||
@Override
|
@Override
|
||||||
public BedrockContainerSlot javaSlotToBedrockContainer(int javaSlot) {
|
public BedrockContainerSlot javaSlotToBedrockContainer(int javaSlot) {
|
||||||
if (javaSlot < this.size) {
|
if (javaSlot < this.size) {
|
||||||
return new BedrockContainerSlot(ContainerSlotType.CONTAINER, javaSlot);
|
return new BedrockContainerSlot(ContainerSlotType.LEVEL_ENTITY, javaSlot);
|
||||||
}
|
}
|
||||||
return super.javaSlotToBedrockContainer(javaSlot);
|
return super.javaSlotToBedrockContainer(javaSlot);
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ public class GrindstoneInventoryTranslator extends AbstractBlockInventoryTransla
|
|||||||
return switch (slotInfoData.getContainer()) {
|
return switch (slotInfoData.getContainer()) {
|
||||||
case GRINDSTONE_INPUT -> 0;
|
case GRINDSTONE_INPUT -> 0;
|
||||||
case GRINDSTONE_ADDITIONAL -> 1;
|
case GRINDSTONE_ADDITIONAL -> 1;
|
||||||
case GRINDSTONE_RESULT, CREATIVE_OUTPUT -> 2;
|
case GRINDSTONE_RESULT, CREATED_OUTPUT -> 2;
|
||||||
default -> super.bedrockSlotToJava(slotInfoData);
|
default -> super.bedrockSlotToJava(slotInfoData);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ public class HopperInventoryTranslator extends AbstractBlockInventoryTranslator
|
|||||||
@Override
|
@Override
|
||||||
public BedrockContainerSlot javaSlotToBedrockContainer(int javaSlot) {
|
public BedrockContainerSlot javaSlotToBedrockContainer(int javaSlot) {
|
||||||
if (javaSlot < this.size) {
|
if (javaSlot < this.size) {
|
||||||
return new BedrockContainerSlot(ContainerSlotType.CONTAINER, javaSlot);
|
return new BedrockContainerSlot(ContainerSlotType.LEVEL_ENTITY, javaSlot);
|
||||||
}
|
}
|
||||||
return super.javaSlotToBedrockContainer(javaSlot);
|
return super.javaSlotToBedrockContainer(javaSlot);
|
||||||
}
|
}
|
||||||
|
@ -478,7 +478,7 @@ public abstract class InventoryTranslator {
|
|||||||
}
|
}
|
||||||
craftState = CraftState.TRANSFER;
|
craftState = CraftState.TRANSFER;
|
||||||
|
|
||||||
if (transferAction.getSource().getContainer() != ContainerSlotType.CREATIVE_OUTPUT) {
|
if (transferAction.getSource().getContainer() != ContainerSlotType.CREATED_OUTPUT) {
|
||||||
return rejectRequest(request);
|
return rejectRequest(request);
|
||||||
}
|
}
|
||||||
if (transferAction.getCount() <= 0) {
|
if (transferAction.getCount() <= 0) {
|
||||||
@ -653,7 +653,7 @@ public abstract class InventoryTranslator {
|
|||||||
}
|
}
|
||||||
craftState = CraftState.TRANSFER;
|
craftState = CraftState.TRANSFER;
|
||||||
|
|
||||||
if (transferAction.getSource().getContainer() != ContainerSlotType.CREATIVE_OUTPUT) {
|
if (transferAction.getSource().getContainer() != ContainerSlotType.CREATED_OUTPUT) {
|
||||||
return rejectRequest(request);
|
return rejectRequest(request);
|
||||||
}
|
}
|
||||||
if (transferAction.getCount() <= 0) {
|
if (transferAction.getCount() <= 0) {
|
||||||
|
@ -186,7 +186,7 @@ public class LoomInventoryTranslator extends AbstractBlockInventoryTranslator {
|
|||||||
case LOOM_INPUT -> 0;
|
case LOOM_INPUT -> 0;
|
||||||
case LOOM_DYE -> 1;
|
case LOOM_DYE -> 1;
|
||||||
case LOOM_MATERIAL -> 2;
|
case LOOM_MATERIAL -> 2;
|
||||||
case LOOM_RESULT, CREATIVE_OUTPUT -> 3;
|
case LOOM_RESULT, CREATED_OUTPUT -> 3;
|
||||||
default -> super.bedrockSlotToJava(slotInfoData);
|
default -> super.bedrockSlotToJava(slotInfoData);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -68,8 +68,8 @@ public class MerchantInventoryTranslator extends BaseInventoryTranslator {
|
|||||||
@Override
|
@Override
|
||||||
public BedrockContainerSlot javaSlotToBedrockContainer(int slot) {
|
public BedrockContainerSlot javaSlotToBedrockContainer(int slot) {
|
||||||
return switch (slot) {
|
return switch (slot) {
|
||||||
case 0 -> new BedrockContainerSlot(ContainerSlotType.TRADE2_INGREDIENT1, 4);
|
case 0 -> new BedrockContainerSlot(ContainerSlotType.TRADE2_INGREDIENT_1, 4);
|
||||||
case 1 -> new BedrockContainerSlot(ContainerSlotType.TRADE2_INGREDIENT2, 5);
|
case 1 -> new BedrockContainerSlot(ContainerSlotType.TRADE2_INGREDIENT_2, 5);
|
||||||
case 2 -> new BedrockContainerSlot(ContainerSlotType.TRADE2_RESULT, 50);
|
case 2 -> new BedrockContainerSlot(ContainerSlotType.TRADE2_RESULT, 50);
|
||||||
default -> super.javaSlotToBedrockContainer(slot);
|
default -> super.javaSlotToBedrockContainer(slot);
|
||||||
};
|
};
|
||||||
@ -78,9 +78,9 @@ public class MerchantInventoryTranslator extends BaseInventoryTranslator {
|
|||||||
@Override
|
@Override
|
||||||
public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
|
public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
|
||||||
return switch (slotInfoData.getContainer()) {
|
return switch (slotInfoData.getContainer()) {
|
||||||
case TRADE2_INGREDIENT1 -> 0;
|
case TRADE2_INGREDIENT_1 -> 0;
|
||||||
case TRADE2_INGREDIENT2 -> 1;
|
case TRADE2_INGREDIENT_2 -> 1;
|
||||||
case TRADE2_RESULT, CREATIVE_OUTPUT -> 2;
|
case TRADE2_RESULT, CREATED_OUTPUT -> 2;
|
||||||
default -> super.bedrockSlotToJava(slotInfoData);
|
default -> super.bedrockSlotToJava(slotInfoData);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -197,7 +197,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
|
|||||||
return slotnum - 27;
|
return slotnum - 27;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CREATIVE_OUTPUT:
|
case CREATED_OUTPUT:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return slotnum;
|
return slotnum;
|
||||||
@ -444,7 +444,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
|
|||||||
}
|
}
|
||||||
craftState = CraftState.TRANSFER;
|
craftState = CraftState.TRANSFER;
|
||||||
|
|
||||||
if (transferAction.getSource().getContainer() != ContainerSlotType.CREATIVE_OUTPUT) {
|
if (transferAction.getSource().getContainer() != ContainerSlotType.CREATED_OUTPUT) {
|
||||||
return rejectRequest(request);
|
return rejectRequest(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -477,7 +477,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
DropAction dropAction = (DropAction) action;
|
DropAction dropAction = (DropAction) action;
|
||||||
if (dropAction.getSource().getContainer() != ContainerSlotType.CREATIVE_OUTPUT || dropAction.getSource().getSlot() != 50) {
|
if (dropAction.getSource().getContainer() != ContainerSlotType.CREATED_OUTPUT || dropAction.getSource().getSlot() != 50) {
|
||||||
return rejectRequest(request);
|
return rejectRequest(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ public class ShulkerInventoryTranslator extends AbstractBlockInventoryTranslator
|
|||||||
@Override
|
@Override
|
||||||
public BedrockContainerSlot javaSlotToBedrockContainer(int javaSlot) {
|
public BedrockContainerSlot javaSlotToBedrockContainer(int javaSlot) {
|
||||||
if (javaSlot < this.size) {
|
if (javaSlot < this.size) {
|
||||||
return new BedrockContainerSlot(ContainerSlotType.SHULKER, javaSlot);
|
return new BedrockContainerSlot(ContainerSlotType.SHULKER_BOX, javaSlot);
|
||||||
}
|
}
|
||||||
return super.javaSlotToBedrockContainer(javaSlot);
|
return super.javaSlotToBedrockContainer(javaSlot);
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ public class SmithingInventoryTranslator extends AbstractBlockInventoryTranslato
|
|||||||
return switch (slotInfoData.getContainer()) {
|
return switch (slotInfoData.getContainer()) {
|
||||||
case SMITHING_TABLE_INPUT -> 0;
|
case SMITHING_TABLE_INPUT -> 0;
|
||||||
case SMITHING_TABLE_MATERIAL -> 1;
|
case SMITHING_TABLE_MATERIAL -> 1;
|
||||||
case SMITHING_TABLE_RESULT, CREATIVE_OUTPUT -> 2;
|
case SMITHING_TABLE_RESULT, CREATED_OUTPUT -> 2;
|
||||||
default -> super.bedrockSlotToJava(slotInfoData);
|
default -> super.bedrockSlotToJava(slotInfoData);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ public class StonecutterInventoryTranslator extends AbstractBlockInventoryTransl
|
|||||||
public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
|
public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
|
||||||
return switch (slotInfoData.getContainer()) {
|
return switch (slotInfoData.getContainer()) {
|
||||||
case STONECUTTER_INPUT -> 0;
|
case STONECUTTER_INPUT -> 0;
|
||||||
case STONECUTTER_RESULT, CREATIVE_OUTPUT -> 1;
|
case STONECUTTER_RESULT, CREATED_OUTPUT -> 1;
|
||||||
default -> super.bedrockSlotToJava(slotInfoData);
|
default -> super.bedrockSlotToJava(slotInfoData);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -45,10 +45,10 @@ public abstract class ChestInventoryTranslator extends BaseInventoryTranslator {
|
|||||||
protected boolean shouldRejectItemPlace(GeyserSession session, Inventory inventory, ContainerSlotType bedrockSourceContainer,
|
protected boolean shouldRejectItemPlace(GeyserSession session, Inventory inventory, ContainerSlotType bedrockSourceContainer,
|
||||||
int javaSourceSlot, ContainerSlotType bedrockDestinationContainer, int javaDestinationSlot) {
|
int javaSourceSlot, ContainerSlotType bedrockDestinationContainer, int javaDestinationSlot) {
|
||||||
// Reject any item placements that occur in the unusable inventory space
|
// Reject any item placements that occur in the unusable inventory space
|
||||||
if (bedrockSourceContainer == ContainerSlotType.CONTAINER && javaSourceSlot >= this.size) {
|
if (bedrockSourceContainer == ContainerSlotType.LEVEL_ENTITY && javaSourceSlot >= this.size) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return bedrockDestinationContainer == ContainerSlotType.CONTAINER && javaDestinationSlot >= this.size;
|
return bedrockDestinationContainer == ContainerSlotType.LEVEL_ENTITY && javaDestinationSlot >= this.size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -64,7 +64,7 @@ public abstract class ChestInventoryTranslator extends BaseInventoryTranslator {
|
|||||||
@Override
|
@Override
|
||||||
public BedrockContainerSlot javaSlotToBedrockContainer(int javaSlot) {
|
public BedrockContainerSlot javaSlotToBedrockContainer(int javaSlot) {
|
||||||
if (javaSlot < this.size) {
|
if (javaSlot < this.size) {
|
||||||
return new BedrockContainerSlot(ContainerSlotType.CONTAINER, javaSlot);
|
return new BedrockContainerSlot(ContainerSlotType.LEVEL_ENTITY, javaSlot);
|
||||||
}
|
}
|
||||||
return super.javaSlotToBedrockContainer(javaSlot);
|
return super.javaSlotToBedrockContainer(javaSlot);
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,7 @@ public abstract class AbstractFurnaceInventoryTranslator extends AbstractBlockIn
|
|||||||
return new BedrockContainerSlot(ContainerSlotType.FURNACE_FUEL, javaSlotToBedrock(slot));
|
return new BedrockContainerSlot(ContainerSlotType.FURNACE_FUEL, javaSlotToBedrock(slot));
|
||||||
}
|
}
|
||||||
if (slot == 2) {
|
if (slot == 2) {
|
||||||
return new BedrockContainerSlot(ContainerSlotType.FURNACE_OUTPUT, javaSlotToBedrock(slot));
|
return new BedrockContainerSlot(ContainerSlotType.FURNACE_RESULT, javaSlotToBedrock(slot));
|
||||||
}
|
}
|
||||||
return super.javaSlotToBedrockContainer(slot);
|
return super.javaSlotToBedrockContainer(slot);
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ public abstract class ChestedHorseInventoryTranslator extends AbstractHorseInven
|
|||||||
if (slotInfoData.getContainer() == ContainerSlotType.HORSE_EQUIP) {
|
if (slotInfoData.getContainer() == ContainerSlotType.HORSE_EQUIP) {
|
||||||
return this.equipSlot;
|
return this.equipSlot;
|
||||||
}
|
}
|
||||||
if (slotInfoData.getContainer() == ContainerSlotType.CONTAINER) {
|
if (slotInfoData.getContainer() == ContainerSlotType.LEVEL_ENTITY) {
|
||||||
return slotInfoData.getSlot() + 1;
|
return slotInfoData.getSlot() + 1;
|
||||||
}
|
}
|
||||||
return super.bedrockSlotToJava(slotInfoData);
|
return super.bedrockSlotToJava(slotInfoData);
|
||||||
@ -68,7 +68,7 @@ public abstract class ChestedHorseInventoryTranslator extends AbstractHorseInven
|
|||||||
return new BedrockContainerSlot(ContainerSlotType.HORSE_EQUIP, 0);
|
return new BedrockContainerSlot(ContainerSlotType.HORSE_EQUIP, 0);
|
||||||
}
|
}
|
||||||
if (slot <= this.size - 1) { // Accommodate for the lack of one slot (saddle or armor)
|
if (slot <= this.size - 1) { // Accommodate for the lack of one slot (saddle or armor)
|
||||||
return new BedrockContainerSlot(ContainerSlotType.CONTAINER, slot - 1);
|
return new BedrockContainerSlot(ContainerSlotType.LEVEL_ENTITY, slot - 1);
|
||||||
}
|
}
|
||||||
return super.javaSlotToBedrockContainer(slot);
|
return super.javaSlotToBedrockContainer(slot);
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren