Allow custom unusable-space blocker item (#4038)

* Allow the "unusable-space-block" to be a custom item (specified by bedrock identifier)

* add space for log error

* don't use ugly atomic reference
This commit is contained in:
chris 2023-08-07 02:22:05 +02:00 committed by GitHub
parent 176ef83ed1
commit b1f04a9012
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -208,12 +208,21 @@ public class InventoryUtils {
private static ItemDefinition getUnusableSpaceBlockDefinition(int protocolVersion) {
String unusableSpaceBlock = GeyserImpl.getInstance().getConfig().getUnusableSpaceBlock();
ItemMapping unusableSpaceBlockID = Registries.ITEMS.forVersion(protocolVersion).getMapping(unusableSpaceBlock);
if (unusableSpaceBlockID != null) {
return unusableSpaceBlockID.getBedrockDefinition();
} else {
GeyserImpl.getInstance().getLogger().error("Invalid value" + unusableSpaceBlock + ". Resorting to barrier block.");
ItemDefinition itemDefinition = null;
// looping through all the items to find the one with the specified Bedrock identifier
for (ItemDefinition definition : Registries.ITEMS.forVersion(protocolVersion).getItemDefinitions().values()) {
if (definition.getIdentifier().equals(unusableSpaceBlock)) {
itemDefinition = definition;
break;
}
}
if (itemDefinition == null) {
GeyserImpl.getInstance().getLogger().error("Invalid value " + unusableSpaceBlock + ". Resorting to barrier block.");
return Registries.ITEMS.forVersion(protocolVersion).getStoredItems().barrier().getBedrockDefinition();
} else {
return itemDefinition;
}
}