Adding namespace and path patterns to ProtocolDefinition

This commit is contained in:
MrGeoTech 2023-01-03 15:41:29 -06:00
parent dd9e06ea69
commit 1b45b11774
No known key found for this signature in database
GPG Key ID: 015B8BF2BAD3DEEA
2 changed files with 44 additions and 0 deletions

View File

@ -16,6 +16,7 @@ package de.bixilon.minosoft.protocol.protocol;
import de.bixilon.kotlinglm.vec3.Vec3i;
import de.bixilon.minosoft.data.text.formatting.color.ChatColors;
import de.bixilon.minosoft.data.text.formatting.color.RGBColor;
import kotlin.text.Regex;
import java.util.regex.Pattern;
@ -40,6 +41,8 @@ public final class ProtocolDefinition {
public static final String DEFAULT_NAMESPACE = "minecraft";
public static final String MINOSOFT_NAMESPACE = "minosoft";
public static final Regex ALLOWED_NAMESPACE_PATTERN = new Regex("[a-z0-9_.\\-]+");
public static final Regex ALLOWED_PATH_PATTERN = new Regex("(?!.*//)[a-z0-9_./\\-]+");
public static final char TEXT_COMPONENT_SPECIAL_PREFIX_CHAR = '\u00A7';
public static final int DEFAULT_BUFFER_SIZE = 4096;

View File

@ -36,4 +36,45 @@ internal class ProtocolDefinitionTest {
fun testSectionSize() {
assertEquals(ProtocolDefinition.BLOCKS_PER_SECTION, 4096)
}
/**
* @see [de.bixilon.minosoft.data.registries.ResourceLocation]
*/
@Test
fun testAllowedNamespaces() {
// Should Pass
assertEquals(ProtocolDefinition.ALLOWED_NAMESPACE_PATTERN.matches("minecraft"), true)
assertEquals(ProtocolDefinition.ALLOWED_NAMESPACE_PATTERN.matches("min1234567890craft"), true)
assertEquals(ProtocolDefinition.ALLOWED_NAMESPACE_PATTERN.matches("mine-craft"), true)
assertEquals(ProtocolDefinition.ALLOWED_NAMESPACE_PATTERN.matches("mine_craft"), true)
assertEquals(ProtocolDefinition.ALLOWED_NAMESPACE_PATTERN.matches("mine.craft"), true)
// Should Fail
assertEquals(ProtocolDefinition.ALLOWED_NAMESPACE_PATTERN.matches("MineCraft"), false)
assertEquals(ProtocolDefinition.ALLOWED_NAMESPACE_PATTERN.matches("mine craft"), false)
assertEquals(ProtocolDefinition.ALLOWED_NAMESPACE_PATTERN.matches("minecraft!"), false)
assertEquals(ProtocolDefinition.ALLOWED_NAMESPACE_PATTERN.matches("^minecraft"), false)
assertEquals(ProtocolDefinition.ALLOWED_NAMESPACE_PATTERN.matches("mine/craft"), false)
}
/**
* @see [de.bixilon.minosoft.data.registries.ResourceLocation]
*/
@Test
fun testAllowedResourceLocationPaths() {
// Should Pass
assertEquals(ProtocolDefinition.ALLOWED_PATH_PATTERN.matches("minecraft"), true)
assertEquals(ProtocolDefinition.ALLOWED_PATH_PATTERN.matches("min1234567890craft"), true)
assertEquals(ProtocolDefinition.ALLOWED_PATH_PATTERN.matches("mine-craft"), true)
assertEquals(ProtocolDefinition.ALLOWED_PATH_PATTERN.matches("mine_craft"), true)
assertEquals(ProtocolDefinition.ALLOWED_PATH_PATTERN.matches("mine.craft"), true)
assertEquals(ProtocolDefinition.ALLOWED_PATH_PATTERN.matches("mine/craft"), true)
// Should Fail
assertEquals(ProtocolDefinition.ALLOWED_PATH_PATTERN.matches("MineCraft"), false)
assertEquals(ProtocolDefinition.ALLOWED_PATH_PATTERN.matches("mine craft"), false)
assertEquals(ProtocolDefinition.ALLOWED_PATH_PATTERN.matches("minecraft!"), false)
assertEquals(ProtocolDefinition.ALLOWED_PATH_PATTERN.matches("^minecraft"), false)
assertEquals(ProtocolDefinition.ALLOWED_PATH_PATTERN.matches("mine//craft"), false)
assertEquals(ProtocolDefinition.ALLOWED_PATH_PATTERN.matches("mine///craft"), false)
}
}