@Override public TernaryState deserialize(TypeToken<?> type, ConfigurationNode value) { return TernaryState.getFromString(value.getString()); }
@Override public void serialize(TypeToken<?> type, TernaryState obj, ConfigurationNode value) { value.setValue(obj.name()); } }
@Listener public void onPlayerInteract(InteractBlockEvent.Secondary.MainHand event, @First Player player) { event.getTargetBlock().getLocation().filter((this::isValid)).ifPresent(location -> { if (!sneakState.getValue().doesPass(player.get(Keys.IS_SNEAKING).orElse(false) || !usePermissions.hasPermission(player))) { return; //Don't alert the player with this mechanic. } if (!readWhenHoldingBlock.getValue()) { ItemStack stack = player.getItemInHand(HandTypes.MAIN_HAND).filter((itemStack -> itemStack.getType().getBlock().isPresent())).orElse(null); if (stack != null) return; } String line = bookLines[ThreadLocalRandom.current().nextInt(bookLines.length)]; player.sendMessage(Text.of(TextColors.YELLOW, "You pick up a book...")); for (String lineSegment : line.split("\\\\n")) { player.sendMessage(TextSerializers.FORMATTING_CODE.deserialize(lineSegment)); } }); }
@Test public void testDoesPassRight() { assertTrue(TernaryState.TRUE.doesPass(true)); }
@Test public void testParseTrue() { assertTrue(TernaryState.TRUE == TernaryState.getFromString("true")); assertTrue(TernaryState.TRUE == TernaryState.getFromString("yes")); assertTrue(TernaryState.TRUE == TernaryState.getFromString("1")); assertTrue(TernaryState.TRUE == TernaryState.getFromString("y")); }
@Test public void testDoesPassWrong() { assertFalse(TernaryState.FALSE.doesPass(true)); }
@Test public void testParseFalse() { assertTrue(TernaryState.FALSE == TernaryState.getFromString("false")); assertTrue(TernaryState.FALSE == TernaryState.getFromString("no")); assertTrue(TernaryState.FALSE == TernaryState.getFromString("0")); assertTrue(TernaryState.FALSE == TernaryState.getFromString("n")); }
@Listener public void onPlayerInteract(InteractBlockEvent.Secondary.MainHand event, @First Player player) { event.getTargetBlock().getLocation().filter(this::isValid).ifPresent(location -> { if (!sneakState.getValue().doesPass(player.get(Keys.IS_SNEAKING).orElse(false)) || player.get(Keys.EXPERIENCE_LEVEL).orElse(0) < 1 || !usePermissions.hasPermission(player)) {
@Test public void testParseNone() { assertTrue(TernaryState.NONE == TernaryState.getFromString("none")); assertTrue(TernaryState.NONE == TernaryState.getFromString("unknown")); assertTrue(TernaryState.NONE == TernaryState.getFromString("undefined")); assertTrue(TernaryState.NONE == TernaryState.getFromString("both")); } }