Interface PlayerShopService


public interface PlayerShopService
Chest+sign player shops: create one, trade against it, remove it. Every lookup here is synchronous and backed by an in-memory cache (there is no async "does a shop exist here" check a block-interact/break listener could reasonably wait on), kept in sync with storage on every mutation.