All versions
1.0.4-forge1.20.1
Release
Betterworld(village) 1.0.4-forge1.20.16 months ago 21
Compatibility
Minecraft: Java Edition
1.20.1
Platform
Forge
Supported environments
Singleplayer only
Changes
版本:1.0.4 采购意向、价格信号和经营日志修正
经济系统
-
新增城镇级采购意向
- 新增
TownblockEntity.PurchaseIntent,用于记录镇内实体对某商品的持续采购需求。 - 工匠会根据工坊配方材料缺口登记或续期采购意向。
- 材料库存恢复后会撤销对应采购意向,避免幽灵需求。
- 商人日结时读取镇内采购意向,并把它折算进目标库存和收购意愿。
- 采购意向不直接给实体发货,也不直接推动出售价上涨。
- 新增
-
修正缺货涨价螺旋
- 出售价涨价现在只由真实成交
todaySold > 0触发。 unmetBuyDemand仍然影响目标库存和收购意愿,但不会单独让出售价上涨。purchaseIntentDemand也只影响补货,不参与出售价涨价。- 如果库存为 0 且一直没人成功买到,出售价会走无成交回落逻辑,避免越缺货越涨、越涨越买不到。
- 出售价涨价现在只由真实成交
-
继续保持收购价和出售价独立
- 没有恢复固定价差保护。
- 出售价不会因为收购价高而被硬性抬高。
- 收购价和出售价仍按各自基础价、成交历史、库存和需求信号独立调整。
-
经济 GUI 同步修正
- 交易成功、缺货失败、买不起、商人收不起货都会触发方块实体同步。
- 修复日志已经记录“购买没有库存”,但经济数据页压力仍显示 0 的问题。
- 经济数据页压力行新增“采购意向”。
- 价格变化显示改为“较昨日”,不再用“当前价 - 基础价”当涨跌。
-
玩家 GUI 失败信号限流
- 玩家在商人 GUI 中反复点击导致的失败信号会被限流。
- 防止通过狂点刷
unmetBuyDemand/unaffordableDemand。
日志
-
商人每日经营总结改为当天收工时写入
- 新增
MerchantBusinessSummaryTask。 - 商人在
MerchantCloseGoal收工流程中写入当天经营总结。 - 不再由跨天经济结算写入经营总结,避免看起来像昨天的账。
- 总结内容包括买货花费、卖货收入、净收入、热销商品、主要收购物品。
MerchantblockEntity保存LastBusinessSummaryDay,避免同一天重复写。
- 新增
-
价格日志仍保留在日结
- 价格变化发生在跨天结算时,所以收购价/出售价调整日志仍由
settleEconomyDay写入。
- 价格变化发生在跨天结算时,所以收购价/出售价调整日志仍由
职业行为
-
农民交易条件修正
- 只有身上有小麦时,农民才会执行卖小麦交易。
- 买种子和买食物要求身上有 money。
- 减少“家里有小麦但身上没小麦,于是空跑卖货”的情况。
-
工坊买材料提前触发
- 工坊买材料不再等到低于 1 批配方材料才触发。
- 当前低于目标材料库存的一半就会提前补货。
- 目标材料库存仍按
WORKSHOP_TARGET_CRAFT_BATCHES计算。 - 实际购买量仍受预算、价格弹性、商人库存和失败冷却限制。
-
资源工出售增加节流
- 资源工成功出售一轮后会进入
resource.sellSuccessCooldownTicks冷却,默认 1200 tick。 - 资源工平时至少攒到
resource.sellMinBatch个资源产物才会出门卖,默认 8。 - 临近收工时
time >= 10000会允许小批量出售,避免把零散资源带到晚上。 - 失败出售仍使用原有失败冷却,减少找不到买家或商人收不起货时的反复尝试。
- 资源工成功出售一轮后会进入
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:k233t5Y1:tAtBig9w"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:k233t5Y1:tAtBig9w"
}

