æ¥æ¬èª | English
ãµãŒããŒéå¶è ã»OP åãã®ã¬ã€ãã§ããå°å ¥ãèšå®ãæš©ééçšã管çè ã·ã§ããã®äœãæ¹ãç£æ»ããã€ã°ã¬ãŒã·ã§ã³ãæ±ããŸãããã¬ã€ã€ãŒåãæäœã¯ å©çšè ã¬ã€ãïŒåºæ¬æ©èœïŒ ãš å©çšè ã¬ã€ãïŒçºå±æ©èœïŒ ãåç §ããŠãã ããã
- Paper 1.21.8 以éïŒéçºã¯ 1.21.11 ã§åäœç¢ºèªïŒ
- Java 21
- Vault: å¿ é ãVault 察å¿ã® Economy ãã©ã°ã€ã³ïŒEssentialsX Economy ãªã©ïŒãå¥éå¿ èŠã§ãã
- BedrockDialog: å¿ é ãModrinth é åžã® Paper ãã©ã°ã€ã³ãBedrock 察å¿ããããå Žå㯠Geyser + Floodgate ã䜵ããŠå°å ¥ããŸãã
- PlaceholderAPI: ä»»æãå°å ¥ããã°ãã¬ãŒã¹ãã«ããŒãå©çšã§ããŸãã
- FancyNpcs: ä»»æãå°å
¥ãããšãã·ã§ããã®èŠãç®ãæäººä»¥å€ïŒäž»ã«ãã¬ã€ã€ãŒ NPCïŒã«ã§ããŸãã
- FancyNpcs 2.10.0 以éã¯ãµãŒããŒåŽã« Java 25 ãèŠæ±ããŸããJava 21 ã§éçšããå Žå㯠FancyNpcs ãé
åžããŠãã
-java21ãã«ãã䜿ã£ãŠãã ããã
- FancyNpcs 2.10.0 以éã¯ãµãŒããŒåŽã« Java 25 ãèŠæ±ããŸããJava 21 ã§éçšããå Žå㯠FancyNpcs ãé
åžããŠãã
ModernVillagerShop-*.jarãplugins/ã«é 眮ããŸãã- VaultãBedrockDialog ãåããé 眮ããŸãïŒPlaceholderAPI ã¯å¿ èŠã«å¿ããŠïŒã
- ãµãŒããŒãèµ·åãããš
plugins/ModernVillagerShop/以äžã«config.ymlãlang/messages_ja.ymlãlang/messages_en.ymlãå±éãããŸãã - Vault å¯Ÿå¿ Economy ãã©ã°ã€ã³ã皌åããŠããããšã確èªããŸãã
äž»ãªé
ç®ãæç²ããŸããæ¢å®å€ã¯ src/main/resources/config.yml ãåç
§ããŠãã ããã
locale: ja_JP # æ¢å®ãã±ãŒã«
fallbackLocale: en_US # èŠã€ãããªãããŒçšã®ãã©ãŒã«ããã¯èšèªãã¡ã€ã«ã¯ plugins/ModernVillagerShop/lang/messages_<locale>.yml ã«é
眮ããŸããããŒãäž¡èšèªã§æã£ãŠããå¿
èŠããããŸãã
storage:
type: sqlite # sqlite | mysql
sqlite:
file: shops.db # ãã©ã°ã€ã³ããŒã¿ãã©ã«ãçžå¯Ÿ
mysql:
host: localhost
port: 3306
database: vshop
username: root
password: ""
properties: "useUnicode=true&characterEncoding=utf8&useSSL=false"
poolSize: 8- SQLite ã¯ã©ã€ã¿çŽååã§æŽåæ§ãæ ä¿ãæè»œã§ããã¹ã±ãŒã©ããªãã£ã¯éå®çã§ãã
- MySQL ã¯è¡ããã¯ïŒ
SELECT ... FOR UPDATEïŒ+ READ COMMITTED 以äžã§ã®éçšãæ³å®ãè€æ°ãµãŒããŒã»å€§èŠæš¡éçšåãã - éäžã§ããã¯ãšã³ããåãæ¿ããå Žå㯠8. ãã€ã°ã¬ãŒã·ã§ã³ ãåç §ããŠãã ããã
economy:
feeRate: 0.05 # ãã¬ã€ã€ãŒã·ã§ãã SELL ã®ææ°æç
feeRateAdmin: 0.05 # 管çè
ã·ã§ããã®ææ°æç
priceMin: 1
priceMax: 1000000
amountMax: 2304
fractionDigits: 2 # å°æ°æ¡æ°
roundingMode: HALF_UP
priceDriftTolerance: 0.01 # äŸ¡æ ŒåçµåŸã®èš±å®¹ä¹é¢ç
currencyFormat: "<amount> <currency>"
priceProvider:
enabled: true # åçäŸ¡æ Œ SPI å
šäœã® ON/OFF- ææ°æã¯åŸŽååŸã«ãµãŒããŒäžããæ¶å€±ãããŸãïŒç¹å®å£åº§ãžã®æ¯èŸŒã¯è¡ããŸããïŒã
priceProvider.enabled: falseã«ãããšã管çè ã·ã§ãããéçå䟡ã«ãã©ãŒã«ããã¯ããŸããé害åãåããäŸ¡æ Œæ¡åŒµãã©ã°ã€ã³ã®åæ¢æã«äœ¿çšããŸãã
shop:
maxShopsPerPlayer: -1 # -1 ã§ç¡å¶é
openDistance: 6.0 # å³ã¯ãªãã¯éåºã®è·é¢
minDistance: 0.5 # æ°èšæã«è¿ãããæ¢åã·ã§ããã匟ãè·é¢
defaultLimitScope: PER_PLAYER
villagerNameFormat: "<shop_name> <gray>[<primary>]</gray>"
villagerNameFormatAdmin: "<shop_name>"
closeWithInventory: REFUSE # DISCARD | DROP | REFUSEmaxShopsPerPlayer㯠PRIMARY ããŒã«ã§ã®æææ°ã®ã¿ãã«ãŠã³ãããŸããå ±åãªãŒããŒãšããŠåå ããŠããå Žåã¯ã«ãŠã³ããããŸãããcloseWithInventoryã®æå:DISCARD: åšåº«ãç Žæ£ããŠåé€DROP: åšåº«ãåºã®äœçœ®ã«ããããããŠåé€REFUSE: åšåº«ããããã¡ã¯åé€ãæåŠïŒæ¢å®ã»å®å šåŽïŒ
fancynpcs:
enabled: true
turnToPlayer: true # ã·ã§ããåŽã§å奿å®ããªããšãã®æ¢å®å€
interactionCooldown: 0.0 # åäžãã¬ã€ã€ãŒã®é£ç¶ã¯ãªãã¯ãç¡èŠããç§æ°ïŒ0 = ç¡å¹ïŒ
maxScale: 2.0 # /vshop appearance scale ã§æå®ã§ããæå€§åç
allowedTypes: [] # 空 = å
šèš±å¯enabled: falseã«ãããšãFancyNpcs ãå ¥ã£ãŠããŠã飿ºãæ¢ããããŸããNPC æå®ã®ã·ã§ããã¯æäººãšããŠè¡šç€ºãããèµ·åæã«èŠåã 1 è¡åºãã ãã§ãã·ã§ããèªäœã¯éåžžã©ããåããŸããallowedTypes/maxScaleã¯modernvillagershop.admin.appearanceãæã€ãã¬ã€ã€ãŒã«ã¯é©çšãããŸããã- èŠãç®ã®èšå®ã¯ãã®ãã©ã°ã€ã³èªèº«ã® DBïŒ
shop_appearanceããŒãã«ïŒã«ä¿åãããŸããFancyNpcs åŽã®npcs.ymlã«ã¯æžã蟌ãŸãªãããã/vshop migrateã§ã¹ãã¬ãŒãžãç§»ããšããäžç·ã«ç§»åããŸããNPC ã¯èµ·åã®ãã³ã« DB ããäœãçŽãããŸãã
playerCache:
maxEntries: 5000 # è¶
ãããš last_seen æé ã§åé€
defaultSort: LAST_SEEN_DESC # LAST_SEEN_DESC | NAME_ASC
textureTtl: 7d # ã¹ãã³åååŸã®æå¹æéãã¬ã€ã€ãŒéžæUIïŒå
±åãªãŒããŒè¿œå ãPRIMARY ç§»è²å
ã--player æå®ãªã©ïŒã§äœ¿ããã£ãã·ã¥ã§ãããã°ã€ã³æã»ãã°ã¢ãŠãæã»å
±åãªãŒããŒåç
§æã«ã¢ãããµãŒããããŸãã
items:
blacklist:
- SHULKER_BOX
- WHITE_SHULKER_BOX
# ... åè²ã·ã¥ã«ã«ãŒã»BUNDLE ç- Bukkit ã® Material åã§æå®ããŸãã
- æ¢å®ã§ã·ã¥ã«ã«ãŒããã¯ã¹ç³»ãšãã³ãã«ãå ¥ã£ãŠããŸããå éšãæãŠãã¢ã€ãã ã¯ãæ³å®å€ã®è€è£œã»æŸåçµè·¯ã«ãªãããæ éã«æ±ã£ãŠãã ããã
- ãã©ã°ã€ã³åŽã®åŒ·å¶ãã©ãã¯ãªã¹ãã¯ãããŸãããéçšããªã·ãŒã«å¿ããŠè¿œå åé€ããŠãã ããã
ui.chest.icons.* ã§ããã§ã¹ãUI å
ã®ããã²ãŒã·ã§ã³çšã¢ã€ã³ã³ïŒæ¬¡/åããŒãžãéãããçµã蟌ã¿ãäžŠã³æ¿ããæ»ãã空ã¹ããããå©çšäžå¯ãäžæãã¬ã€ã€ãŒãããïŒã®ãããªã¢ã«ã»è¡šç€ºåã»ãã¢ã»ã«ã¹ã¿ã ã¢ãã«ããŒã¿ããã¹ãŠäžæžãã§ããŸãããã¯ã¹ãã£ããã¯éçšãšçµã¿åãããŠå€èŠ³ãæŽããããŸãã
paper-plugin.yml ã«ã次ã®ããŒã«çã°ã«ãŒãã³ã°ãå®çŸ©ãããŠããŸããLuckPerms ãªã©ã®æš©éãã©ã°ã€ã³ã§ä»äžãããšäŸ¿å©ã§ãã
modernvillagershop.player(default:true): äžè¬ãã¬ã€ã€ãŒãå¿ èŠãšããæš©éã®ããã¯ãuse,egg,list,search,stats,history,open.nearby,edit.*,coowner.manage,coowner.transferãå«ããmodernvillagershop.admin(default:op): 管çè æš©éããã¯ãadmin.egg,admin.edit,admin.export,admin.import,edit.others,coowner.manage.others,coowner.transfer.others,history.others,open.any,migrate,reload,admin.appearanceãå«ãã
代衚çãªãã®:
| æš©é | çšé |
|---|---|
modernvillagershop.use |
ã·ã§ããUI ãéãïŒè³Œå ¥ã»çŽåïŒ |
modernvillagershop.egg |
ãã¬ã€ã€ãŒçšã¹ããŒã³ãšãã°ã®äœ¿çš |
modernvillagershop.admin.egg |
管çè çšã¹ããŒã³ãšãã°ã®äœ¿çš |
modernvillagershop.admin.edit |
管çè ã·ã§ããã®ç·šé |
modernvillagershop.edit.* |
èªã·ã§ããã®å皮線éæäœïŒmove / rename / profession / appearance / suspend / delete / delete.refundïŒ |
modernvillagershop.edit.appearance.url |
ä»»æã® URL ããã¹ãã³ãèªã¿èŸŒãïŒæ¢å® opïŒ |
modernvillagershop.admin.appearance |
fancynpcs.allowedTypes / maxScale ã®å¶éãç¡èŠãã |
modernvillagershop.edit.others |
ä»è ã·ã§ããã®ç·šéïŒããŒã«ç¡èŠïŒ |
modernvillagershop.coowner.manage.others |
ä»»æã·ã§ããã®å ±åãªãŒããŒç®¡ç |
modernvillagershop.coowner.transfer.others |
ä»»æã·ã§ããã® PRIMARY 匷å¶ç§»è²ïŒé¢è±è 察å¿ãªã©ïŒ |
modernvillagershop.history.others |
ä»è ã»ä»ã·ã§ããã®ååŒå±¥æŽé²èЧ |
modernvillagershop.open.nearby / open.any / open.<shopId> |
ã·ã§ããUI ãéããè·é¢æ¡ä»¶ãopen.any ãæåªå
ãåå¥ shopId æå®ãå¯ |
modernvillagershop.migrate |
ã¹ãã¬ãŒãžãã€ã°ã¬ãŒã·ã§ã³ |
modernvillagershop.reload |
èšå®ãªããŒã |
- 圹å²ïŒPRIMARY / MANAGER / STAFFïŒ ã¯ã·ã§ããããšã«èšå®ããããã®ã·ã§ããã§äœãã§ããããæ±ºããŸãã
- æš©éïŒ
modernvillagershop.*ïŒ ã¯ ãã®æ©èœã䜿ãããã©ãã ãæ±ºããŸãã - äŸ:
modernvillagershop.edit.renameãæããªããã¬ã€ã€ãŒã¯ãããšã PRIMARY ã§ãèªã·ã§ããã®åå倿Žãã§ããŸããã *.othersã¯åœ¹å²ãç¡èŠããŠä»»æã·ã§ããã«ä»å ¥ã§ãã管çè åãã®ãªãŒããŒã©ã€ãã§ããéå¶ã¹ã¿ããã«éå®ããŠä»äžããŠãã ããã
管çè ã·ã§ããã¯ãææè ãªãã»åšåº«ç¡éãã®ã·ã§ããã§ãå ¬å ±è²©å£²æã NPC 亀ææãšããŠäœ¿ããŸãã
-
modernvillagershop.admin.eggæš©éãæã£ããŠãŒã¶ãŒã§:/vshop egg <察象ãã¬ã€ã€ãŒ> adminadminã¿ã€ãã®ã¹ããŒã³ãšãã°ã¯å éšçã«ã¯infçžåœã®å®¹éïŒ45 ã¹ãããåäœããŒãžã³ã°ïŒã§ãã -
ã¹ããŒã³ãšãã°ãæã£ãŠèšçœ®ããŸãã
-
éåžžã®ç·šéãããŒïŒ
/vshop edit/ æäººå³ã¯ãªãã¯ã§éããåç®ãç·šéïŒã§åºåæ ãç»é²ããŸãã管çè ã·ã§ããã®ç·šéã«ã¯modernvillagershop.admin.editãå¿ èŠã§ãã
- åšåº«ã¯ç¡é: SELL ã¯åžžã«è²©å£²å¯èœãBUY ã§çŽåãããã¢ã€ãã ã¯ãµãŒãã«åžåïŒç Žæ£ïŒãããŸãã
- å ¥éå ãªã: SELL ååŒã®å£²äžã¯ã·ã¹ãã åŠçïŒèª°ã«ãæ¯ã蟌ãŸããŸããïŒã
- å
±åãªãŒããŒã¯èšå®äžå¯:
admin-shopãšã©ãŒãåºãŸãã - ææ°æ:
economy.feeRateAdminãé©çšããã¬ã€ã€ãŒã·ã§ãããšå¥ã ã«ãã¥ãŒãã³ã°ã§ããŸãã - åçäŸ¡æ Œå¯Ÿå¿:
PriceProviderSPI ã§äŸ¡æ Œãäžæžãã§ããå¯äžã®ã·ã§ããçš®å¥ã§ãïŒè©³ãã㯠10. åçäŸ¡æ Œ APIïŒã
管çè ã·ã§ããã®åºåæ 㯠YAML ã§ãšã¯ã¹ããŒãïŒã€ã³ããŒãã§ããŸããæ¢åã®ç®¡çè ã·ã§ãããå¥ãµãŒããŒã«è€è£œãããã倧éã¹ããããå€éšã§ç·šéãããããçšéã§ãã
察象ã®ç®¡çè ã·ã§ããã®æäººã èŠç·å 8 ãããã¯ä»¥å ã«æããç¶æ ã§å®è¡ããŸãã
/vshop admin export <ãã¡ã€ã«å>
/vshop admin import <ãã¡ã€ã«å>
- æš©é:
modernvillagershop.admin.export/modernvillagershop.admin.import - ãã¡ã€ã«ã¯
plugins/ModernVillagerShop/exports/以äžã«é 眮ãããŸãã - export: æ¢ã«ãã¡ã€ã«ãããå Žåã¯äžæžããããšã©ãŒã«ãªããŸããå¥åãæå®ãããæ¢åãã¡ã€ã«ãåé€ããŠãã ããã
- import: æ¢åã®å šã¹ããããåé€ããŠçœ®ãæããŸããå®è¡åã«èªåããã¯ã¢ãããåããããã¹ãã¡ãã»ãŒãžã§å ±åãããŸãã
çšéãšããŠãexport ãã YAML ã PR ã§ç®¡çããŠã¬ãã¥ãŒå¯èœãªåœ¢ã«ããããã¹ããŒãžã³ã°âæ¬çªåæ ã®ã¯ãŒã¯ãããŒã«çµã¿èŸŒããŸãã
| ã³ãã³ã | 説æ | äž»ãªæš©é |
|---|---|---|
/vshop help |
ãã«ã衚瀺 | â |
/vshop list [page] |
ã·ã§ããäžèЧ | modernvillagershop.list |
/vshop open <shopId> |
ã·ã§ããUI ãéã | open.nearby / open.any / open.<shopId> |
/vshop search <item> [page] |
ã¢ã€ãã åã§æ€çŽ¢ | modernvillagershop.search |
/vshop stats <shopId> |
çµ±èšè¡šç€º | modernvillagershop.stats |
/vshop history [shopId] [page] [--flags] |
ååŒå±¥æŽ | history / history.others |
/vshop edit [shopId] |
ç·šéã¡ãã¥ãŒ | edit / edit.others |
/vshop appearance <shopId> <sub> |
èŠãç®ã®å€æŽïŒFancyNpcs å¿ é ïŒ | edit.appearance / edit.others |
/vshop coowner <shopId> |
å ±åãªãŒããŒç®¡çUI | coowner.manage / .others |
/vshop transfer <shopId> <player> |
PRIMARY ç§»è² | coowner.transfer / .others |
/vshop egg <player> <lines|inf|admin> |
ã¹ããŒã³ãšãã°é åž | egg / admin.egg |
/vshop admin export <file> |
管çè ã·ã§ããã¹ããã YAML åºå | admin.export |
/vshop admin import <file> |
管çè ã·ã§ããã¹ããã YAML å蟌 | admin.import |
/vshop migrate <from> <to> |
ã¹ãã¬ãŒãžãã€ã°ã¬ãŒã·ã§ã³ | migrate |
/vshop reload |
èšå®ã»èšèªã»ã¡ãã»ãŒãžã®ãªããŒã | reload |
/vshop history ã® --from / --to 㯠YYYY-MM-DD ãŸã㯠YYYY-MM-DDTHH:mm[:ss] ãåãä»ãããµãŒããŒã®ããã©ã«ãã¿ã€ã ãŸãŒã³ã§è§£éããŸãã
èŠãç®ã®å€æŽã¯ Dialog UI ãçšæãããã³ãã³ãã ãã§æäœããŸããèšå®é ç®ãå€ããããŸã«ããè§Šããªãæäœãªã®ã§ãã¡ãã¥ãŒãæœãããäžèЧã§èŠããã»ããæ±ããããããã§ãã
| ãµãã³ãã³ã | å 容 |
|---|---|
show |
çŸåšã®èšå®ã衚瀺ïŒèªã¿åãå°çšãªã®ã§ã³ã³ãœãŒã«ãããå®è¡å¯ïŒ |
npc [skin] |
ãã¬ã€ã€ãŒ NPC ã«åãæ¿ãããskin çç¥æã¯ãªãŒããŒåã䜿ã |
villager |
éåžžã®æäººã«æ»ã |
type <entityType> |
NPC ã®ãšã³ãã£ãã£ã¿ã€ããå€ãã |
skin <name|uuid|url|@none> [slim] |
ã¹ãã³ãèšå®ã»è§£é€ããïŒPLAYER ã¿ã€ãã®ã¿ïŒ |
glow <true|false> [color] |
çºå ãšçºå è² |
scale <åç> |
倧ãã |
equip <slot> [none] |
æã«æã£ãŠããã¢ã€ãã ãè£ åããã / å€ã |
attribute <name> <value|@none> |
FancyNpcs ã®å±æ§ãèšå®ã»åé€ããïŒäŸ: pose sittingïŒ |
reset |
èšå®ããã¹ãŠç Žæ£ããŠæäººã«æ»ã |
è£
åã¹ããã㯠FancyNpcs ã®ãã®ã§ãMAINHAND / OFFHAND / HEAD / CHEST / LEGS / FEET / BODY / SADDLE ã§ãã
éçšäžã®æ³šæ:
- URL ã¹ãã³ã¯å¥æš©éã§ãã
modernvillagershop.edit.appearance.urlïŒæ¢å® opïŒãæã€äººã ããhttps://...ãæå®ã§ããŸããä»»æã®å€éšç»åããµãŒããŒçµç±ã§ååŸããããšã«ãªããããäžè¬ãã¬ã€ã€ãŒã«ã¯éããªãã§ããã®ãç¡é£ã§ãã - NPC 衚瀺äžã®ã·ã§ããã§ã¯ãç·šéã¡ãã¥ãŒããè·æ¥å€æŽã®ãã¿ã³ãæ¶ããŸããè·æ¥ã¯æäººåºæã®èšå®ã ããã§ããèšå®å€èªäœã¯æ®ãã®ã§ã
villagerã«æ»ãã°å ã®è·æ¥ã§åŸ©å ãããŸãã - NPC ã¯ãµãŒããŒäžã®ãšã³ãã£ãã£ãšããŠååšããŸãããä»ãã©ã°ã€ã³ã®ãšã³ãã£ãã£äžèЧãã¢ãã«ãŠã³ãã
/killãªã©ã®å¯Ÿè±¡ã«ã¯ãªããŸããã /vshop reloadãå®è¡ãããšãfancynpcsã»ã¯ã·ã§ã³ã®å€æŽãåæ ãããã NPC ãåéä¿¡ããŸãã
- ååŒå±¥æŽã¯ DB ã«æ°žç¶åãããä»è
ã»ä»ã·ã§ããã¯
modernvillagershop.history.othersãæã€ãŠãŒã¶ãŒã/vshop history <shopId>ã--player <name>ã§é²èЧã§ããŸãã - åå±¥æŽã¬ã³ãŒãã«ã¯
basePriceïŒåºåæ ã®éçå䟡ïŒãfinalPriceïŒå®éã®ååŒäŸ¡æ ŒïŒãresolvedByïŒæ¡çšããã PriceProvider ã® id åïŒãä¿åãããŸããåçäŸ¡æ Œã®åŠ¥åœæ§æ€èšŒã«äœ¿ããŸãã - ãã°çµç±ã®åæãããDB ã«çŽæ¥ã¯ãšãªãæµããæ¹ãæè»ã§ããSQLite ãªã
shops.dbãMySQL ãªãèšå®ããdatabaseã«å¯ŸããŠshop_transactionsã SELECT ããŠãã ããã
/vshop reload
config.ymlãšèšèªãã¡ã€ã«ãåèªã¿èŸŒã¿ããŸãã- DB æ¥ç¶ã¯åæ§ç¯ãããŸãããã¹ãã¬ãŒãžèšå®ãå€ãããå Žåã¯ãµãŒããŒåèµ·åãå¿ èŠã§ãã
- ã©ã³ã¿ã€ã äžã«èšèªãã¡ã€ã«ãå·®ãæ¿ãããšãã®æ€èšŒã«äŸ¿å©ã§ãã
SQLite â MySQL ã®éã§ããŒã¿ãç§»è¡ã§ããŸãã
/vshop migrate <from> <to>
äŸ: /vshop migrate sqlite mysql
- æš©é:
modernvillagershop.migrate - ç§»è¡äžã¯ååŒãäžæåæ¢ãããŸãã
- æé :
- ã¹ããŒãåæåïŒç§»è¡å ïŒ
- å šããŒãã«ã®ãã«ã¯ã³ããŒ
- æŽåæ§ãã§ãã¯
- 倱ææã¯ç§»è¡å ããŒã¿ãããŒã«ããã¯ããç§»è¡å ã¯ãã®ãŸãŸæ®ããŸããå®å šåŽã«åããèšèšã§ãã
æšå¥šãããŒ:
- ãµãŒããŒãã¡ã³ããã³ã¹åç¥ããŠãå®è³ªçãªååŒãæ¢ããã
config.ymlã®storageã ç§»è¡å ã®èšå®ã«åãæ¿ããåã« ããã¯ã¢ããã- ç§»è¡å
ã® MySQL ã«æ¥ç¶æ
å ±ã確èªïŒ
config.ymlã«åæ ïŒã /vshop migrate <from> <to>ãå®è¡ã- å®äºã¡ãã»ãŒãžã確èªåŸã
config.ymlã®storage.typeãåãæ¿ãããµãŒããŒåèµ·åã - åäœç¢ºèªåŸãæ§ããŒã¿ïŒ
shops.dbãªã©ïŒãç Žæ£ã
placeholderapi.enabled: trueïŒæ¢å®ïŒã§ä»¥äžã䜿ããŸãã
%mvshop_shop_count_<player>%: ãã¬ã€ã€ãŒã®ææã·ã§ããæ°ïŒPRIMARY ã®ã¿ã«ãŠã³ãïŒ%mvshop_shop_name_<shopId>%: ã·ã§ããå%mvshop_shop_owner_<shopId>%: ææè å%mvshop_total_sales_<player>%: ãã¬ã€ã€ãŒã®çޝèšå£²äž%mvshop_total_purchases_<player>%: ãã¬ã€ã€ãŒã®çޝèšè³Œå ¥é¡
ScoreboardãChat prefixãDeluxeMenus ãªã©ã«çµã¿èŸŒããŸãã
ä»ãã©ã°ã€ã³ããã管çè ã·ã§ããã®äŸ¡æ Œãåçã«å€æŽãã SPI ãæäŸããŠããŸãïŒãã¬ã€ã€ãŒã·ã§ããã¯å¯Ÿè±¡å€ïŒã
- ãã€ãã©ã€ã³å: è€æ°ã® Provider ã
orderæé ã§é£éé©çšããŸããéçå䟡ã¯å éšã§order = 0ãšããŠæ±ãããŸãã - å Provider ã¯
PriceContextãšå段ã®PriceResultãåããäŸ¡æ Œã»çç±ããã¹ãã»ãã£ãã·ã¥TTL ãè¿ããŸãã PriceResult#reasonã¯ãã§ã¹ãUI ã® Lore æ«å°Ÿã«è¡šç€ºãããŸãïŒBedrock ã§ã¯ãã¬ãŒã³ããã¹ãïŒã- ååŒæç«æã
basePrice/finalPrice/resolvedByïŒé©çšããã Provider id åïŒãå±¥æŽã«èšé²ãããŸãã
- PriceSnapshot: è³Œå ¥ç¢ºèªãã€ã¢ãã°ãéããç¬éã®äŸ¡æ Œã«åçµã確å®ãŸã§ãã®å€ã䜿ããŸãã
- ä¹é¢èš±å®¹ç:
economy.priceDriftToleranceãè¶ ããŠç¢ºå®æã®å解決å€ããºã¬ãå ŽåãååŒãèªåãã£ã³ã»ã«ããŸãã - æåŠããžãã¯ã¯
ShopPreTransactionEventã«éçŽãProvider ã¯äŸ¡æ Œæ±ºå®ã®ã¿ãæ åœããŸãïŒProvider ããååŒãæ¢ããã®ã¯éæšå¥šïŒã
- Provider ã¯åæå®è¡ãåæãšããŸããI/O ããããã³ã°ãå«ããªãã§ãã ããïŒèŠçŽïŒã
- äŸå€æã¯åœè©² Provider ãã¹ãããããåæ®µã®çµæãæ¡çšïŒååŒã¯æ¢ããŸããïŒããã°ã«èŠåãåºããŸãã
PriceResult#ttlã§æç»ãã£ãã·ã¥å¯¿åœãæå®ããŠãã ããããã§ã¹ãUI ã®é£ç¶åèšç®ãæããããŸãã- å
šäœåæ¢ã¹ã€ãã:
economy.priceProvider.enabled: falseãé害æã®ãã§ã€ã«ã»ãŒãã«äœ¿ããŸãã
詳现㪠interface 㯠spec.md §12.3 ãåç §ããŠãã ããã
ä»ãã©ã°ã€ã³ããå©çšã§ãã Bukkit Event ãæäŸããŸãã
ShopCreateEvent/ShopDeleteEventShopPreTransactionEventïŒCancellableãååŒæåŠçšïŒShopTransactionEventïŒæç«åŸïŒShopSlotChangeEventïŒåºåæ 远å ã»ç·šéã»åé€ïŒ
å
¬é API 㯠ServicesManager çµç±ã§ååŸã§ããŸã:
ModernVillagerShopAPI api = Bukkit.getServicesManager()
.load(ModernVillagerShopAPI.class);api.priceRegistry().register(plugin, provider) ã§ PriceProvider ãç»é²ããŸããAPI ã¯ã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ã§äºææ§ãç¶æããŸãã
| çç¶ | 確èªãã€ã³ã |
|---|---|
| èµ·åæã«ãšã©ãŒã§ç¡å¹åããã | Vault ãš BedrockDialog ãããŒãæžã¿ããJava 21 ããPaper 1.21.8+ ãã |
| Vault Economy ãèŠã€ãããªã | Vault 察å¿ã® Economy ãã©ã°ã€ã³ãåå± ããŠããããEssentialsX Economy ãªã©ãå ¥ããã |
| Villager ãã·ã§ããã«ãªããªãã»æ¶ãã | 該åœãã£ã³ã¯ãããŒããããŠããããDB ã«ä¿åãããŠããã®ã§ããã£ã³ã¯ããŒãæã« UUID ãæ€æ»ããŠèªååã¹ããŒã³ãã仿§ïŒæªããŒãæã¯åããŸããïŒã |
| MySQL ç§»è¡åŸã«ååŒã§äžæŽå | ãµãŒããŒåé¢ã¬ãã«ã READ COMMITTED 以äžããSELECT ... FOR UPDATE ãæ¢ããèšå®ããªããã確èªã |
| Bedrock çã§è£ é£Ÿãæ¶ãã | 仿§ãBedrockDialog 㯠MiniMessage è£ é£Ÿããã¬ãŒã³ããã¹ãã«èœãšããããæèšåŽã§ãè£ é£Ÿã«äŸåããªãèšèšãæšå¥šã |
ãã€ã¢ãã°ã® onClose ãåããªã |
Bedrock ã§ã¯æªãµããŒããæç€ºçãªãã£ã³ã»ã«ãã¿ã³èšèšã«äŸåããçŸè¡ä»æ§éãã |
| ååŒéç¥ãå±ããªã | 察象ãã¬ã€ã€ãŒã® player_preferences ã§éç¥ã OFF ã«ãªã£ãŠããªãããSTAFF ããŒã«ã¯ä»æ§äžéç¥å¯Ÿè±¡å€ã |
/vshop egg ã admin ã¿ã€ãã§æåŠããã |
å®è¡è
ã« modernvillagershop.admin.egg ãä»äžãããŠãããã |
/vshop admin export ã§ãno-target-villagerã |
èŠç·å 8 ãããã¯ä»¥å ã«ã·ã§ããæäººãå ¥ã£ãŠããªãããŸã£ããèŠãŠããå®è¡ã |
/vshop migrate å®è¡åŸãæ§ããŒã¿ãèŠãŠãã |
config.yml ã® storage.type ãåãæ¿ããããã§ãµãŒããŒåèµ·åããŠããªãå¯èœæ§ã |
- spec.md: v1 仿§ïŒæ¬äœèšèšïŒ
- dialog.md: Paper Dialog API + BedrockDialog å©çšã¡ã¢
- adventure.md: Adventure / MiniMessage èšæ³
- modern-commands.md: Paper Brigadier ã³ãã³ã API
- å©çšè ã¬ã€ãïŒåºæ¬æ©èœïŒ / å©çšè ã¬ã€ãïŒçºå±æ©èœïŒ