A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
Y
Z
C
- calculateInputsAndByproducts(io.github.pylonmc.rebar.recipe.FluidOrItem) - function in io.github.pylonmc.rebar.recipe.IngredientCalculator.Companion
- callEvent() - function in org.bukkit.event.Event
- CampfireRebarBlockHandler - class in io.github.pylonmc.rebar.block.interfaces
- CampfireRecipeType - class in io.github.pylonmc.rebar.recipe.vanilla
- Key:
minecraft:campfire_cookingDespite the vanilla default cooking time being 100 ticks, we set it to 600 ticks here to match the actual in-game behavior - CampfireRecipeWrapper - class in io.github.pylonmc.rebar.recipe.vanilla
- canAddFluid(io.github.pylonmc.rebar.fluid.RebarFluid,java.lang.Double) - function in io.github.pylonmc.rebar.block.interfaces.FluidTankRebarBlock
- Checks if adding a certain amount of fluid of a certain type would result in a valid fluid amount.
- canAddFluid(java.lang.Double) - function in io.github.pylonmc.rebar.block.interfaces.FluidTankRebarBlock
- Checks if adding a certain amount of fluid would result in a valid fluid amount.
- canMine(org.bukkit.Material) - function in io.github.pylonmc.rebar.util.MiningLevel
- canPass(io.github.pylonmc.rebar.fluid.RebarFluid) - function in io.github.pylonmc.rebar.content.fluid.FluidPipe
- Returns whether the pipe is capable of moving the given fluid through it.
- canPlayerCraft(org.bukkit.entity.Player,io.github.pylonmc.rebar.item.RebarItem,java.lang.Boolean) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- canPlayerCraft(org.bukkit.entity.Player,io.github.pylonmc.rebar.item.RebarItem) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- canPlayerCraft(org.bukkit.entity.Player,io.github.pylonmc.rebar.item.RebarItemSchema,java.lang.Boolean) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- Checks whether a player can craft an item (ie has the associated research, or has permission to bypass research.
- canPlayerCraft(org.bukkit.entity.Player,io.github.pylonmc.rebar.item.RebarItemSchema) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- Checks whether a player can craft an item (ie has the associated research, or has permission to bypass research.
- canPlayerCraft(org.bukkit.entity.Player,org.bukkit.NamespacedKey,java.lang.Boolean) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- canPlayerCraft(org.bukkit.entity.Player,org.bukkit.NamespacedKey) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- canPlayerPickUp(org.bukkit.entity.Player,io.github.pylonmc.rebar.item.RebarItem,java.lang.Boolean) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- Checks whether a player can pick up an item (ie has the associated research, or has permission to bypass research.
- canPlayerPickUp(org.bukkit.entity.Player,io.github.pylonmc.rebar.item.RebarItem) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- Checks whether a player can pick up an item (ie has the associated research, or has permission to bypass research.
- canPlayerPickUp(org.bukkit.entity.Player,io.github.pylonmc.rebar.item.RebarItemSchema,java.lang.Boolean) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- Checks whether a player can pick up an item (ie has the associated research, or has permission to bypass research.
- canPlayerPickUp(org.bukkit.entity.Player,io.github.pylonmc.rebar.item.RebarItemSchema) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- Checks whether a player can pick up an item (ie has the associated research, or has permission to bypass research.
- canPlayerPickUp(org.bukkit.entity.Player,org.bukkit.NamespacedKey,java.lang.Boolean) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- Checks whether a player can pick up an item based off its key (ie has the associated research, or has permission to bypass research.
- canPlayerPickUp(org.bukkit.entity.Player,org.bukkit.NamespacedKey) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- Checks whether a player can pick up an item based off its key (ie has the associated research, or has permission to bypass research.
- canPlayerUse(org.bukkit.entity.Player,io.github.pylonmc.rebar.item.RebarItem,java.lang.Boolean) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- canPlayerUse(org.bukkit.entity.Player,io.github.pylonmc.rebar.item.RebarItem) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- canPlayerUse(org.bukkit.entity.Player,io.github.pylonmc.rebar.item.RebarItemSchema,java.lang.Boolean) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- Checks whether a player can use an item (ie has the associated research, or has permission to bypass research.
- canPlayerUse(org.bukkit.entity.Player,io.github.pylonmc.rebar.item.RebarItemSchema) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- Checks whether a player can use an item (ie has the associated research, or has permission to bypass research.
- canPlayerUse(org.bukkit.entity.Player,org.bukkit.NamespacedKey,java.lang.Boolean) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- canPlayerUse(org.bukkit.entity.Player,org.bukkit.NamespacedKey) - function in io.github.pylonmc.rebar.item.research.Research.Companion
- canRegister() - function in me.clip.placeholderapi.expansion.WailaPlaceholders
- canSet(org.bukkit.inventory.ItemStack,java.lang.Long) - function in io.github.pylonmc.rebar.logistics.slot.CrafterLogisticSlot
- canSet(org.bukkit.inventory.ItemStack,java.lang.Long) - function in io.github.pylonmc.rebar.logistics.slot.LogisticSlot
- canSet(org.bukkit.inventory.ItemStack,java.lang.Long) - function in io.github.pylonmc.rebar.logistics.slot.LogisticSlot
- canSet(org.bukkit.inventory.ItemStack,java.lang.Long) - function in io.github.pylonmc.rebar.logistics.slot.VirtualInventoryLogisticSlot
- canSetFluid(io.github.pylonmc.rebar.fluid.RebarFluid,java.lang.Double) - function in io.github.pylonmc.rebar.block.interfaces.FluidBufferRebarBlock
- Checks if a new amount of fluid is greater than zero and fits inside the corresponding buffer.
- canSetFluid(java.lang.Double) - function in io.github.pylonmc.rebar.block.interfaces.FluidTankRebarBlock
- Checks if a new amount of fluid is greater than zero and fits inside the tank.
- canTranslate(java.lang.String,java.util.Locale) - function in io.github.pylonmc.rebar.i18n.RebarTranslator
- CargoDuct - class in io.github.pylonmc.rebar.content.cargo
- CargoDuct.Companion - class in io.github.pylonmc.rebar.content.cargo.CargoDuct
- CargoRebarBlock - class in io.github.pylonmc.rebar.block.interfaces
- Represents a block that can connect to cargo ducts and use them to interface with other RebarCargoBlocks.
- CargoRebarBlockHandler - class in io.github.pylonmc.rebar.block.interfaces
- CargoRebarBlockHandler.Companion - class in io.github.pylonmc.rebar.block.interfaces.CargoRebarBlockHandler
- CauldronRebarBlockHandler - class in io.github.pylonmc.rebar.block.interfaces
- CENTI - enum entry in io.github.pylonmc.rebar.util.gui.unit.MetricPrefix
- CharPersistentDataType - class in io.github.pylonmc.rebar.datatypes
- checkFormed() - function in io.github.pylonmc.rebar.block.interfaces.SimpleRebarMultiblock
- Warning: You should not call this yourself.
- chestplate(java.lang.Double,java.lang.Double) - function in io.github.pylonmc.rebar.item.builder.ItemStackBuilder
- ChiseledBookshelfFuelLogisticSlot - class in io.github.pylonmc.rebar.logistics.slot
- ChunkPosition - class in io.github.pylonmc.rebar.util.position
- Represents the position of a chunk (x, z, and world).
- ChunkPositionKt - class in io.github.pylonmc.rebar.util.position
- ChunkPositionPersistentDataType - class in io.github.pylonmc.rebar.datatypes
- ChunkScope - class in io.github.pylonmc.rebar.async
- A CoroutineScope that is canceled when the chunk is unloaded.
- ChunkScope.Companion - class in io.github.pylonmc.rebar.async.ChunkScope
- cleanup(java.util.function.Consumer) - function in io.github.pylonmc.rebar.gametest.GameTestConfig.Builder
- Runs after test ends
- clear() - function in io.github.pylonmc.rebar.util.Octree
- clear() - function in kotlin.collections.MutableSet
- clearLore() - function in io.github.pylonmc.rebar.item.builder.ItemStackBuilder
- clone() - function in io.github.pylonmc.rebar.item.builder.ItemStackBuilder
- COLD - enum entry in io.github.pylonmc.rebar.fluid.tags.FluidTemperature
Generally fluids that are considered cryogenic, like liquid nitrogen or liquid helium.
- color(net.kyori.adventure.bossbar.BossBar.Color) - function in io.github.pylonmc.rebar.waila.WailaDisplay
- colorToTextColor(org.bukkit.Color) - function in io.github.pylonmc.rebar.util.RebarUtils
- CombustRebarEntityHandler - class in io.github.pylonmc.rebar.entity.interfaces
- CommandBuilder - class in io.github.pylonmc.rebar.command
- If you are using Kotlin, you can use this class to create Brigadier commands Kotlin-style.
- CommandBuilderKt - class in io.github.pylonmc.rebar.command
- ComponentPersistentDataType - class in io.github.pylonmc.rebar.datatypes
- ComposterRebarBlockHandler - class in io.github.pylonmc.rebar.block.interfaces
- ConfettiCreeperListener - class in io.github.pylonmc.rebar.entity
- ConfettiParticle - class in io.github.pylonmc.rebar.util
- ConfigAdapter - class in io.github.pylonmc.rebar.config.adapter
- ConfigAdapterKt - class in io.github.pylonmc.rebar.config.adapter
- ConfigSection - class in io.github.pylonmc.rebar.config
- A wrapper around ConfigurationSection providing useful utilities for reading/writing.
- ConfigSection.KeyNotFoundException - class in io.github.pylonmc.rebar.config.ConfigSection
- Thrown when a key is not found.
- ConfigSectionConfigAdapter - class in io.github.pylonmc.rebar.config.adapter
- ConfigurableRecipeType - class in io.github.pylonmc.rebar.recipe
- configurationContains(java.lang.String) - function in me.clip.placeholderapi.expansion.WailaPlaceholders
- connectPipeDisplay(java.util.UUID) - function in io.github.pylonmc.rebar.content.fluid.FluidEndpointDisplay
- connectPipeDisplay(java.util.UUID) - function in io.github.pylonmc.rebar.content.fluid.FluidIntersectionDisplay
- connectPipeDisplay(java.util.UUID) - function in io.github.pylonmc.rebar.content.fluid.FluidPointDisplay
- ConsumeRebarItemHandler - class in io.github.pylonmc.rebar.item.interfaces
- contains(io.github.pylonmc.rebar.fluid.RebarFluid) - function in io.github.pylonmc.rebar.recipe.RecipeInput.Fluid
- contains(org.bukkit.NamespacedKey) - function in io.github.pylonmc.rebar.registry.RebarRegistry
- contains(org.bukkit.Tag) - function in io.github.pylonmc.rebar.registry.RebarRegistry
- contains(io.github.pylonmc.rebar.util.WeightedSet.Element) - function in kotlin.collections.Set
- containsAll(java.util.Collection) - function in kotlin.collections.Set
- ContributorButton - class in io.github.pylonmc.rebar.guide.button
- ContributorConfig - class in io.github.pylonmc.rebar.config
- ContributorConfigAdapter - class in io.github.pylonmc.rebar.config.adapter
- ContributorsPage - class in io.github.pylonmc.rebar.guide.pages.help
- convert(org.bukkit.NamespacedKey) - function in io.github.pylonmc.rebar.command.DualItemRegistryCommandArgument
- convert(org.bukkit.NamespacedKey) - function in io.github.pylonmc.rebar.command.RegistryCommandArgument
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.ConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.ConfigSectionConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.ContributorConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.CullingPresetConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.EnumConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.FluidOrItemConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.IntRangeAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.ItemStackConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.ItemTagConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.KeyedConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.ListConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.MapConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.RandomizedSoundConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.RecipeChoiceConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.RecipeInputConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.RecipeInputFluidAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.RecipeInputItemAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.SetConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.SoundConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.TextColorConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.UUIDConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.WailaDisplayConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(java.lang.Object) - function in io.github.pylonmc.rebar.config.adapter.WeightedSetConfigAdapter
- Converts the given value obtained from config to the target type T.
- convert(org.bukkit.NamespacedKey,S) - function in io.papermc.paper.command.brigadier.argument.CustomArgumentType.Converted
- convert(org.bukkit.NamespacedKey,S) - function in io.papermc.paper.command.brigadier.argument.DualItemRegistryCommandArgument
- CookingRecipeWrapper - class in io.github.pylonmc.rebar.recipe.vanilla
- CooldownRebarItem - class in io.github.pylonmc.rebar.item.interfaces
- Implemented by other Rebar interfaces that may be affected by cooldowns.
- CopperRebarBlockHandler - class in io.github.pylonmc.rebar.block.interfaces
- CopRebarEntity - class in io.github.pylonmc.rebar.entity.interfaces
- copy() - function in io.github.pylonmc.rebar.culling.PlayerCullingConfig
- copy(io.papermc.paper.datacomponent.item.ItemAttributeModifiers.Builder,java.util.List) - function in io.github.pylonmc.rebar.item.builder.ItemStackBuilder.Companion
- copyOf(org.bukkit.inventory.ItemStack) - function in io.github.pylonmc.rebar.item.builder.ItemStackBuilder.Companion
- Creates a new ItemStackBuilder from stack.
- copyResource(org.bukkit.plugin.Plugin,java.lang.String) - function in io.github.pylonmc.rebar.config.ConfigSection.Companion
- Copies a resource (i.e.
- CrafterLogisticSlot - class in io.github.pylonmc.rebar.logistics.slot
- CrafterRebarBlockHandler - class in io.github.pylonmc.rebar.block.interfaces
- CraftingRecipeWrapper - class in io.github.pylonmc.rebar.recipe.vanilla
- create() - function in io.github.pylonmc.rebar.util.RandomizedSound
- createFluidBuffer(io.github.pylonmc.rebar.fluid.RebarFluid,java.lang.Double,java.lang.Boolean,java.lang.Boolean) - function in io.github.pylonmc.rebar.block.interfaces.FluidBufferRebarBlock
- Creates a fluid buffer with the specified fluid type and capacity
- createFluidPoint(io.github.pylonmc.rebar.fluid.FluidPointType,org.bukkit.block.BlockFace) - function in io.github.pylonmc.rebar.block.interfaces.FluidBufferRebarBlock
- Creates a fluid input point.
- createFluidPoint(io.github.pylonmc.rebar.fluid.FluidPointType,org.bukkit.block.BlockFace,io.github.pylonmc.rebar.block.context.BlockCreateContext,java.lang.Boolean) - function in io.github.pylonmc.rebar.block.interfaces.FluidBufferRebarBlock
- Creates a fluid input point.
- createFluidPoint(io.github.pylonmc.rebar.fluid.FluidPointType,org.bukkit.block.BlockFace,io.github.pylonmc.rebar.block.context.BlockCreateContext,java.lang.Boolean,java.lang.Float) - function in io.github.pylonmc.rebar.block.interfaces.FluidBufferRebarBlock
- Creates a fluid input point.
- createFluidPoint(io.github.pylonmc.rebar.fluid.FluidPointType,org.bukkit.block.BlockFace,java.lang.Float) - function in io.github.pylonmc.rebar.block.interfaces.FluidBufferRebarBlock
- Creates a fluid input point.
- createFluidPoint(io.github.pylonmc.rebar.fluid.FluidPointType,org.bukkit.block.BlockFace) - function in io.github.pylonmc.rebar.block.interfaces.FluidRebarBlock
- Creates a fluid input point.
- createFluidPoint(io.github.pylonmc.rebar.fluid.FluidPointType,org.bukkit.block.BlockFace,io.github.pylonmc.rebar.block.context.BlockCreateContext,java.lang.Boolean) - function in io.github.pylonmc.rebar.block.interfaces.FluidRebarBlock
- Creates a fluid input point.
- createFluidPoint(io.github.pylonmc.rebar.fluid.FluidPointType,org.bukkit.block.BlockFace,io.github.pylonmc.rebar.block.context.BlockCreateContext,java.lang.Boolean,java.lang.Float) - function in io.github.pylonmc.rebar.block.interfaces.FluidRebarBlock
- Creates a fluid input point.
- createFluidPoint(io.github.pylonmc.rebar.fluid.FluidPointType,org.bukkit.block.BlockFace,java.lang.Float) - function in io.github.pylonmc.rebar.block.interfaces.FluidRebarBlock
- Creates a fluid input point.
- createFluidPoint(io.github.pylonmc.rebar.fluid.FluidPointType,org.bukkit.block.BlockFace) - function in io.github.pylonmc.rebar.block.interfaces.FluidTankRebarBlock
- Creates a fluid input point.
- createFluidPoint(io.github.pylonmc.rebar.fluid.FluidPointType,org.bukkit.block.BlockFace,io.github.pylonmc.rebar.block.context.BlockCreateContext,java.lang.Boolean) - function in io.github.pylonmc.rebar.block.interfaces.FluidTankRebarBlock
- Creates a fluid input point.
- createFluidPoint(io.github.pylonmc.rebar.fluid.FluidPointType,org.bukkit.block.BlockFace,io.github.pylonmc.rebar.block.context.BlockCreateContext,java.lang.Boolean,java.lang.Float) - function in io.github.pylonmc.rebar.block.interfaces.FluidTankRebarBlock
- Creates a fluid input point.
- createFluidPoint(io.github.pylonmc.rebar.fluid.FluidPointType,org.bukkit.block.BlockFace,java.lang.Float) - function in io.github.pylonmc.rebar.block.interfaces.FluidTankRebarBlock
- Creates a fluid input point.
- createGui() - function in io.github.pylonmc.rebar.block.interfaces.GuiRebarBlock
- Returns the block's GUI.
- createItemStack() - function in io.github.pylonmc.rebar.item.ItemTypeWrapper
- createItemStack() - function in io.github.pylonmc.rebar.item.ItemTypeWrapper
- createItemStack(java.lang.Integer) - function in io.github.pylonmc.rebar.item.ItemTypeWrapper
- createItemStack(java.lang.Integer) - function in io.github.pylonmc.rebar.item.ItemTypeWrapper.Rebar
- createItemStack(java.lang.Integer) - function in io.github.pylonmc.rebar.item.ItemTypeWrapper.Vanilla
- createLogisticGroup(java.lang.String,io.github.pylonmc.rebar.logistics.LogisticGroup) - function in io.github.pylonmc.rebar.block.interfaces.CargoRebarBlock
- createLogisticGroup(java.lang.String,io.github.pylonmc.rebar.logistics.LogisticGroupType,java.util.List) - function in io.github.pylonmc.rebar.block.interfaces.CargoRebarBlock
- createLogisticGroup(java.lang.String,io.github.pylonmc.rebar.logistics.LogisticGroupType,io.github.pylonmc.rebar.logistics.slot.LogisticSlot) - function in io.github.pylonmc.rebar.block.interfaces.CargoRebarBlock
- createLogisticGroup(java.lang.String,io.github.pylonmc.rebar.logistics.LogisticGroupType,xyz.xenondevs.invui.inventory.VirtualInventory) - function in io.github.pylonmc.rebar.block.interfaces.CargoRebarBlock
- createLogisticGroup(java.lang.String,io.github.pylonmc.rebar.logistics.LogisticGroup) - function in io.github.pylonmc.rebar.block.interfaces.LogisticRebarBlock
- createLogisticGroup(java.lang.String,io.github.pylonmc.rebar.logistics.LogisticGroupType,java.util.List) - function in io.github.pylonmc.rebar.block.interfaces.LogisticRebarBlock
- createLogisticGroup(java.lang.String,io.github.pylonmc.rebar.logistics.LogisticGroupType,io.github.pylonmc.rebar.logistics.slot.LogisticSlot) - function in io.github.pylonmc.rebar.block.interfaces.LogisticRebarBlock
- createLogisticGroup(java.lang.String,io.github.pylonmc.rebar.logistics.LogisticGroupType,xyz.xenondevs.invui.inventory.VirtualInventory) - function in io.github.pylonmc.rebar.block.interfaces.LogisticRebarBlock
- createSection(java.lang.String) - function in io.github.pylonmc.rebar.config.ConfigSection
- CreeperRebarEntityHandler - class in io.github.pylonmc.rebar.entity.interfaces
- CulledRebarBlock - class in io.github.pylonmc.rebar.block.interfaces
- Enables a RebarBlock to take advantage of the BlockCullingEngine to do something per player when the block is considered culled or visible.
- CullingPreset - class in io.github.pylonmc.rebar.culling
- CullingPresetConfigAdapter - class in io.github.pylonmc.rebar.config.adapter
- CyclePlayerSettingButton - class in io.github.pylonmc.rebar.guide.button.setting
- A button which cycles through a fixed set of values for a player setting.