Initial 25w07a port ()

* Initial 25w07a port

* Bump version
This commit is contained in:
modmuss 2025-02-13 19:40:46 +00:00 committed by GitHub
parent 0eb0bee996
commit 5cbce673b6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 136 additions and 243 deletions
fabric-object-builder-api-v1/src
main
java/net/fabricmc/fabric
api/object/builder/v1/trade
impl/object/builder
resources
testmod/java/net/fabricmc/fabric/test/object/builder

View file

@ -105,14 +105,6 @@ public final class TradeOfferHelper {
factory.accept(new TradeOfferInternals.WanderingTraderOffersBuilderImpl());
}
/**
* @deprecated This never did anything useful.
*/
@Deprecated(forRemoval = true)
public static void refreshOffers() {
TradeOfferInternals.printRefreshOffersWarning();
}
private TradeOfferHelper() {
}

View file

@ -72,7 +72,25 @@ public final class TradeOfferInternals {
}
public static synchronized void registerWanderingTraderOffers(int level, Consumer<List<TradeOffers.Factory>> factory) {
registerOffers(TradeOffers.WANDERING_TRADER_TRADES, level, factory);
final List<TradeOffers.Factory> list = new ArrayList<>();
factory.accept(list);
WanderingTraderOffersBuilderImpl.initWanderingTraderTrades();
Int2ObjectMap<TradeOffers.Factory[]> tradeMap = new Int2ObjectOpenHashMap<>();
TradeOffers.WANDERING_TRADER_TRADES.forEach(pair -> {
tradeMap.put(pair.getRight(), pair.getLeft());
});
registerOffers(tradeMap, level, factory);
List<Pair<TradeOffers.Factory[], Integer>> tradeList = new ArrayList<>();
tradeMap.forEach((key, value) -> {
tradeList.add(Pair.of(value, key));
});
TradeOffers.WANDERING_TRADER_TRADES = tradeList;
}
// Shared code to register offers for both villagers and wandering traders.
@ -87,11 +105,6 @@ public final class TradeOfferInternals {
leveledTradeMap.put(level, allEntries);
}
public static void printRefreshOffersWarning() {
Throwable loggingThrowable = new Throwable();
LOGGER.warn("TradeOfferHelper#refreshOffers does not do anything, yet it was called! Stack trace:", loggingThrowable);
}
public static class WanderingTraderOffersBuilderImpl implements TradeOfferHelper.WanderingTraderOffersBuilder {
private static final Object2IntMap<Identifier> ID_TO_INDEX = Util.make(new Object2IntOpenHashMap<>(), idToIndex -> {
idToIndex.put(BUY_ITEMS_POOL, 0);
@ -105,8 +118,8 @@ public final class TradeOfferInternals {
* Make the trade list modifiable.
*/
static void initWanderingTraderTrades() {
if (!(TradeOffers.REBALANCED_WANDERING_TRADER_TRADES instanceof ArrayList)) {
TradeOffers.REBALANCED_WANDERING_TRADER_TRADES = new ArrayList<>(TradeOffers.REBALANCED_WANDERING_TRADER_TRADES);
if (!(TradeOffers.WANDERING_TRADER_TRADES instanceof ArrayList)) {
TradeOffers.WANDERING_TRADER_TRADES = new ArrayList<>(TradeOffers.WANDERING_TRADER_TRADES);
}
}
@ -121,8 +134,8 @@ public final class TradeOfferInternals {
Pair<TradeOffers.Factory[], Integer> pool = Pair.of(factories, count);
initWanderingTraderTrades();
ID_TO_INDEX.put(id, TradeOffers.REBALANCED_WANDERING_TRADER_TRADES.size());
TradeOffers.REBALANCED_WANDERING_TRADER_TRADES.add(pool);
ID_TO_INDEX.put(id, TradeOffers.WANDERING_TRADER_TRADES.size());
TradeOffers.WANDERING_TRADER_TRADES.add(pool);
TradeOffers.Factory[] delayedModifications = DELAYED_MODIFICATIONS.remove(id);
if (delayedModifications != null) addOffersToPool(id, delayedModifications);
@ -143,9 +156,9 @@ public final class TradeOfferInternals {
int poolIndex = ID_TO_INDEX.getInt(pool);
initWanderingTraderTrades();
Pair<TradeOffers.Factory[], Integer> poolPair = TradeOffers.REBALANCED_WANDERING_TRADER_TRADES.get(poolIndex);
Pair<TradeOffers.Factory[], Integer> poolPair = TradeOffers.WANDERING_TRADER_TRADES.get(poolIndex);
TradeOffers.Factory[] modified = ArrayUtils.addAll(poolPair.getLeft(), factories);
TradeOffers.REBALANCED_WANDERING_TRADER_TRADES.set(poolIndex, Pair.of(modified, poolPair.getRight()));
TradeOffers.WANDERING_TRADER_TRADES.set(poolIndex, Pair.of(modified, poolPair.getRight()));
return this;
}
}

View file

@ -7,7 +7,7 @@ extendable class net/minecraft/block/entity/BlockEntityType$BlockEntityFactory
accessible method net/minecraft/block/entity/BlockEntityType <init> (Lnet/minecraft/block/entity/BlockEntityType$BlockEntityFactory;Ljava/util/Set;)V
accessible class net/minecraft/village/TradeOffers$TypeAwareBuyForOneEmeraldFactory
mutable field net/minecraft/village/TradeOffers REBALANCED_PROFESSION_TO_LEVELED_TRADE Ljava/util/Map;
mutable field net/minecraft/village/TradeOffers REBALANCED_WANDERING_TRADER_TRADES Ljava/util/List;
mutable field net/minecraft/village/TradeOffers WANDERING_TRADER_TRADES Ljava/util/List;
accessible method net/minecraft/entity/SpawnRestriction register (Lnet/minecraft/entity/EntityType;Lnet/minecraft/entity/SpawnLocation;Lnet/minecraft/world/Heightmap$Type;Lnet/minecraft/entity/SpawnRestriction$SpawnPredicate;)V

View file

@ -24,6 +24,7 @@ import static net.minecraft.server.command.CommandManager.literal;
import java.util.Optional;
import com.mojang.brigadier.exceptions.SimpleCommandExceptionType;
import org.apache.commons.lang3.tuple.Pair;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.entity.Entity;
@ -106,8 +107,8 @@ public class VillagerTypeTest1 implements ModInitializer {
WanderingTraderEntity trader = (WanderingTraderEntity) entity;
trader.getOffers().clear();
for (TradeOffers.Factory[] value : TradeOffers.WANDERING_TRADER_TRADES.values()) {
for (TradeOffers.Factory factory : value) {
for (Pair<TradeOffers.Factory[], Integer> value : TradeOffers.WANDERING_TRADER_TRADES) {
for (TradeOffers.Factory factory : value.getKey()) {
final TradeOffer result = factory.create(trader, Random.create());
if (result == null) {