diff --git a/build.gradle b/build.gradle index 01cb7fedd..c06bc2a69 100644 --- a/build.gradle +++ b/build.gradle @@ -12,9 +12,9 @@ plugins { def ENV = System.getenv() class Globals { - static def baseVersion = "0.10.10" - static def mcVersion = "20w21a" - static def yarnVersion = "+build.2" + static def baseVersion = "0.10.11" + static def mcVersion = "20w22a" + static def yarnVersion = "+build.1" } version = Globals.baseVersion + "+" + (ENV.BUILD_NUMBER ? ("build." + ENV.BUILD_NUMBER) : "local") + "-" + getBranch() @@ -67,7 +67,7 @@ allprojects { dependencies { minecraft "com.mojang:minecraft:$Globals.mcVersion" mappings "net.fabricmc:yarn:${Globals.mcVersion}${Globals.yarnVersion}:v2" - modCompile "net.fabricmc:fabric-loader:0.8.2+build.194" + modCompile "net.fabricmc:fabric-loader:0.8.4+build.198" } configurations { diff --git a/fabric-command-api-v1/build.gradle b/fabric-command-api-v1/build.gradle index 476565e7e..4e65bf492 100644 --- a/fabric-command-api-v1/build.gradle +++ b/fabric-command-api-v1/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-command-api-v1" -version = getSubprojectVersion(project, "1.0.2") +version = getSubprojectVersion(project, "1.0.3") dependencies { compile project(path: ':fabric-api-base', configuration: 'dev') diff --git a/fabric-command-api-v1/src/main/java/net/fabricmc/fabric/mixin/command/MixinMinecraftDedicatedServer.java b/fabric-command-api-v1/src/main/java/net/fabricmc/fabric/mixin/command/MixinMinecraftDedicatedServer.java index f47e02fc3..ebada175d 100644 --- a/fabric-command-api-v1/src/main/java/net/fabricmc/fabric/mixin/command/MixinMinecraftDedicatedServer.java +++ b/fabric-command-api-v1/src/main/java/net/fabricmc/fabric/mixin/command/MixinMinecraftDedicatedServer.java @@ -28,18 +28,20 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import net.minecraft.server.MinecraftServer; import net.minecraft.server.WorldGenerationProgressListenerFactory; -import net.minecraft.server.command.CommandManager; import net.minecraft.server.dedicated.MinecraftDedicatedServer; +import net.minecraft.class_5350; +import net.minecraft.resource.ResourcePackManager; +import net.minecraft.resource.ResourcePackProfile; import net.minecraft.util.UserCache; -import net.minecraft.class_5219; +import net.minecraft.world.SaveProperties; import net.minecraft.world.level.storage.LevelStorage; import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback; @Mixin(MinecraftDedicatedServer.class) public abstract class MixinMinecraftDedicatedServer extends MinecraftServer { - public MixinMinecraftDedicatedServer(LevelStorage.Session session, class_5219 arg, Proxy proxy, DataFixer dataFixer, CommandManager commandManager, MinecraftSessionService minecraftSessionService, GameProfileRepository gameProfileRepository, UserCache userCache, WorldGenerationProgressListenerFactory worldGenerationProgressListenerFactory) { - super(session, arg, proxy, dataFixer, commandManager, minecraftSessionService, gameProfileRepository, userCache, worldGenerationProgressListenerFactory); + public MixinMinecraftDedicatedServer(LevelStorage.Session session, SaveProperties saveProperties, ResourcePackManager<ResourcePackProfile> resourcePackManager, Proxy proxy, DataFixer dataFixer, class_5350 arg, MinecraftSessionService minecraftSessionService, GameProfileRepository gameProfileRepository, UserCache userCache, WorldGenerationProgressListenerFactory worldGenerationProgressListenerFactory) { + super(session, saveProperties, resourcePackManager, proxy, dataFixer, arg, minecraftSessionService, gameProfileRepository, userCache, worldGenerationProgressListenerFactory); } @Inject(method = "setupServer", at = @At("HEAD")) diff --git a/fabric-command-api-v1/src/testmod/java/net/fabricmc/fabric/test/command/CommandTest.java b/fabric-command-api-v1/src/testmod/java/net/fabricmc/fabric/test/command/CommandTest.java index a815a3a29..0ca8bc831 100644 --- a/fabric-command-api-v1/src/testmod/java/net/fabricmc/fabric/test/command/CommandTest.java +++ b/fabric-command-api-v1/src/testmod/java/net/fabricmc/fabric/test/command/CommandTest.java @@ -63,6 +63,11 @@ public class CommandTest implements ModInitializer { } }); + // Disabling the test mod for now, as https://bugs.mojang.com/browse/MC-186109 breaks it + if (true) { + return; + } + // Use the ServerTickCallback to verify the commands actually exist in the command dispatcher. ServerTickCallback.EVENT.register(server -> { // Don't run the test more than once diff --git a/fabric-content-registries-v0/build.gradle b/fabric-content-registries-v0/build.gradle index b0e90948c..bfe2ae05c 100644 --- a/fabric-content-registries-v0/build.gradle +++ b/fabric-content-registries-v0/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-content-registries-v0" -version = getSubprojectVersion(project, "0.1.6") +version = getSubprojectVersion(project, "0.1.7") dependencies { compile project(path: ':fabric-api-base', configuration: 'dev') diff --git a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/api/registry/LootEntryTypeRegistry.java b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/api/registry/LootEntryTypeRegistry.java index 2a6da3d52..d9250772c 100644 --- a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/api/registry/LootEntryTypeRegistry.java +++ b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/api/registry/LootEntryTypeRegistry.java @@ -29,5 +29,5 @@ public interface LootEntryTypeRegistry { LootEntryTypeRegistry INSTANCE = LootEntryTypeRegistryImpl.INSTANCE; @Deprecated - void register(LootEntry.Serializer<?> serializer); + void register(LootEntry.class_5337<?> serializer); } diff --git a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/impl/content/registry/LootEntryTypeRegistryImpl.java b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/impl/content/registry/LootEntryTypeRegistryImpl.java index 5e77c3e64..588a5f706 100644 --- a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/impl/content/registry/LootEntryTypeRegistryImpl.java +++ b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/impl/content/registry/LootEntryTypeRegistryImpl.java @@ -32,7 +32,7 @@ public final class LootEntryTypeRegistryImpl implements LootEntryTypeRegistry { Method target = null; for (Method m : LootEntries.class.getDeclaredMethods()) { - if (m.getParameterCount() == 1 && m.getParameterTypes()[0] == LootEntry.Serializer.class) { + if (m.getParameterCount() == 1 && m.getParameterTypes()[0] == LootEntry.class_5337.class) { if (target != null) { throw new RuntimeException("More than one register-like method found in LootEntries!"); } else { @@ -52,7 +52,7 @@ public final class LootEntryTypeRegistryImpl implements LootEntryTypeRegistry { private LootEntryTypeRegistryImpl() { } @Override - public void register(LootEntry.Serializer<?> serializer) { + public void register(LootEntry.class_5337<?> serializer) { try { REGISTER_METHOD.invoke(null, serializer); } catch (Throwable t) { diff --git a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/MixinFireBlock.java b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/MixinFireBlock.java index e8bc442c4..b011d1151 100644 --- a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/MixinFireBlock.java +++ b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/MixinFireBlock.java @@ -57,7 +57,7 @@ public class MixinFireBlock implements FireBlockHooks { if (entry != null) { // TODO: use a (BlockState -> int) with this as the default impl - if (block.method_28498(Properties.WATERLOGGED) && block.get(Properties.WATERLOGGED)) { + if (block.contains(Properties.WATERLOGGED) && block.get(Properties.WATERLOGGED)) { info.setReturnValue(0); } else { info.setReturnValue(entry.getBurnChance()); @@ -71,7 +71,7 @@ public class MixinFireBlock implements FireBlockHooks { if (entry != null) { // TODO: use a (BlockState -> int) with this as the default impl - if (block.method_28498(Properties.WATERLOGGED) && block.get(Properties.WATERLOGGED)) { + if (block.contains(Properties.WATERLOGGED) && block.get(Properties.WATERLOGGED)) { info.setReturnValue(0); } else { info.setReturnValue(entry.getSpreadChance()); diff --git a/fabric-loot-tables-v1/build.gradle b/fabric-loot-tables-v1/build.gradle index 439911ead..d460cbc0a 100644 --- a/fabric-loot-tables-v1/build.gradle +++ b/fabric-loot-tables-v1/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-loot-tables-v1" -version = getSubprojectVersion(project, "0.1.7") +version = getSubprojectVersion(project, "0.1.8") dependencies { compile project(path: ':fabric-api-base', configuration: 'dev') diff --git a/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/api/loot/v1/FabricLootPool.java b/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/api/loot/v1/FabricLootPool.java index 0c71b0404..3d6112c3c 100644 --- a/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/api/loot/v1/FabricLootPool.java +++ b/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/api/loot/v1/FabricLootPool.java @@ -20,7 +20,7 @@ import java.util.List; import net.minecraft.loot.LootPool; import net.minecraft.loot.LootTableRange; -import net.minecraft.loot.condition.LootCondition; +import net.minecraft.class_5341; import net.minecraft.loot.entry.LootEntry; import net.minecraft.loot.function.LootFunction; @@ -34,7 +34,7 @@ public interface FabricLootPool { } List<LootEntry> getEntries(); - List<LootCondition> getConditions(); + List<class_5341> getConditions(); List<LootFunction> getFunctions(); LootTableRange getRolls(); } diff --git a/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/api/loot/v1/FabricLootPoolBuilder.java b/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/api/loot/v1/FabricLootPoolBuilder.java index f55f99e87..a969924c2 100644 --- a/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/api/loot/v1/FabricLootPoolBuilder.java +++ b/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/api/loot/v1/FabricLootPoolBuilder.java @@ -16,9 +16,9 @@ package net.fabricmc.fabric.api.loot.v1; +import net.minecraft.class_5341; import net.minecraft.loot.LootPool; import net.minecraft.loot.LootTableRange; -import net.minecraft.loot.condition.LootCondition; import net.minecraft.loot.entry.LootEntry; import net.minecraft.loot.function.LootFunction; @@ -46,7 +46,7 @@ public class FabricLootPoolBuilder extends LootPool.Builder { } @Override - public FabricLootPoolBuilder conditionally(LootCondition.Builder condition) { + public FabricLootPoolBuilder conditionally(class_5341.Builder condition) { super.conditionally(condition); return this; } @@ -62,7 +62,7 @@ public class FabricLootPoolBuilder extends LootPool.Builder { return this; } - public FabricLootPoolBuilder withCondition(LootCondition condition) { + public FabricLootPoolBuilder withCondition(class_5341 condition) { extended.getConditions().add(condition); return this; } diff --git a/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/api/loot/v1/LootEntryTypeRegistry.java b/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/api/loot/v1/LootEntryTypeRegistry.java index 639a2a8c2..079d06aaa 100644 --- a/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/api/loot/v1/LootEntryTypeRegistry.java +++ b/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/api/loot/v1/LootEntryTypeRegistry.java @@ -34,5 +34,5 @@ public interface LootEntryTypeRegistry { * * @param serializer the loot entry serializer */ - void register(LootEntry.Serializer<?> serializer); + void register(LootEntry.class_5337<?> serializer); } diff --git a/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/impl/loot/table/LootEntryTypeRegistryImpl.java b/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/impl/loot/table/LootEntryTypeRegistryImpl.java index 08eeca0d8..06656d711 100644 --- a/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/impl/loot/table/LootEntryTypeRegistryImpl.java +++ b/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/impl/loot/table/LootEntryTypeRegistryImpl.java @@ -29,7 +29,7 @@ public final class LootEntryTypeRegistryImpl implements net.fabricmc.fabric.api. Method target = null; for (Method m : LootEntries.class.getDeclaredMethods()) { - if (m.getParameterCount() == 1 && m.getParameterTypes()[0] == LootEntry.Serializer.class) { + if (m.getParameterCount() == 1 && m.getParameterTypes()[0] == LootEntry.class_5337.class) { if (target != null) { throw new RuntimeException("More than one register-like method found in LootEntries!"); } else { @@ -49,7 +49,7 @@ public final class LootEntryTypeRegistryImpl implements net.fabricmc.fabric.api. private LootEntryTypeRegistryImpl() { } @Override - public void register(LootEntry.Serializer<?> serializer) { + public void register(LootEntry.class_5337<?> serializer) { try { REGISTER_METHOD.invoke(null, serializer); } catch (Throwable t) { diff --git a/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/mixin/loot/table/LootPoolBuilderHooks.java b/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/mixin/loot/table/LootPoolBuilderHooks.java index 6ab52ee2d..4bca6c03f 100644 --- a/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/mixin/loot/table/LootPoolBuilderHooks.java +++ b/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/mixin/loot/table/LootPoolBuilderHooks.java @@ -22,7 +22,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import net.minecraft.loot.LootPool; -import net.minecraft.loot.condition.LootCondition; +import net.minecraft.class_5341; import net.minecraft.loot.entry.LootEntry; import net.minecraft.loot.function.LootFunction; @@ -31,7 +31,7 @@ public interface LootPoolBuilderHooks { @Accessor List<LootEntry> getEntries(); @Accessor - List<LootCondition> getConditions(); + List<class_5341> getConditions(); @Accessor List<LootFunction> getFunctions(); } diff --git a/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/mixin/loot/table/MixinLootPool.java b/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/mixin/loot/table/MixinLootPool.java index 0f964c6ae..002ebf998 100644 --- a/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/mixin/loot/table/MixinLootPool.java +++ b/fabric-loot-tables-v1/src/main/java/net/fabricmc/fabric/mixin/loot/table/MixinLootPool.java @@ -26,7 +26,7 @@ import org.spongepowered.asm.mixin.gen.Accessor; import net.minecraft.loot.LootPool; import net.minecraft.loot.LootTableRange; -import net.minecraft.loot.condition.LootCondition; +import net.minecraft.class_5341; import net.minecraft.loot.entry.LootEntry; import net.minecraft.loot.function.LootFunction; @@ -40,7 +40,7 @@ public abstract class MixinLootPool implements FabricLootPool { @Shadow @Final - private LootCondition[] conditions; + private class_5341[] conditions; @Shadow @Final @@ -52,7 +52,7 @@ public abstract class MixinLootPool implements FabricLootPool { } @Override - public List<LootCondition> getConditions() { + public List<class_5341> getConditions() { return Arrays.asList(conditions); } diff --git a/fabric-object-builder-api-v1/build.gradle b/fabric-object-builder-api-v1/build.gradle index e12fbedd0..b4a25babd 100644 --- a/fabric-object-builder-api-v1/build.gradle +++ b/fabric-object-builder-api-v1/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-object-builder-api-v1" -version = getSubprojectVersion(project, "1.3.1") +version = getSubprojectVersion(project, "1.4.0") dependencies { compile project(path: ':fabric-api-base', configuration: 'dev') diff --git a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/block/FabricBlockSettings.java b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/block/FabricBlockSettings.java index 6d422ae4b..4483a5fb5 100644 --- a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/block/FabricBlockSettings.java +++ b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/block/FabricBlockSettings.java @@ -285,4 +285,13 @@ public class FabricBlockSettings extends AbstractBlock.Settings { public FabricBlockSettings breakByTool(Tag<Item> tag) { return this.breakByTool(tag, 0); } + + /** + * Make the material require tool to drop and slows down mining speed if the incorrect tool is used. + */ + @Override + public FabricBlockSettings method_29292() { + super.method_29292(); + return this; + } } diff --git a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/block/FabricMaterialBuilder.java b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/block/FabricMaterialBuilder.java index b98c5fd8e..115b59d10 100644 --- a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/block/FabricMaterialBuilder.java +++ b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/api/object/builder/v1/block/FabricMaterialBuilder.java @@ -83,13 +83,4 @@ public class FabricMaterialBuilder extends Material.Builder { super.replaceable(); return this; } - - /** - * Make the material require tool to drop and slows down mining speed if the incorrect tool is used. - */ - @Override - public FabricMaterialBuilder requiresTool() { - super.requiresTool(); - return this; - } } diff --git a/fabric-object-builders-v0/build.gradle b/fabric-object-builders-v0/build.gradle index e10016187..62148346a 100644 --- a/fabric-object-builders-v0/build.gradle +++ b/fabric-object-builders-v0/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-object-builders" -version = getSubprojectVersion(project, "0.5.2") +version = getSubprojectVersion(project, "0.6.0") dependencies { compile project(path: ':fabric-api-base', configuration: 'dev') diff --git a/fabric-object-builders-v0/src/main/java/net/fabricmc/fabric/api/block/FabricMaterialBuilder.java b/fabric-object-builders-v0/src/main/java/net/fabricmc/fabric/api/block/FabricMaterialBuilder.java index 855e845ed..e011b96cb 100644 --- a/fabric-object-builders-v0/src/main/java/net/fabricmc/fabric/api/block/FabricMaterialBuilder.java +++ b/fabric-object-builders-v0/src/main/java/net/fabricmc/fabric/api/block/FabricMaterialBuilder.java @@ -89,12 +89,6 @@ public class FabricMaterialBuilder extends Material.Builder { return this; } - @Override - public FabricMaterialBuilder requiresTool() { - this.delegate.requiresTool(); - return this; - } - @Override public Material build() { return this.delegate.build(); diff --git a/fabric-registry-sync-v0/build.gradle b/fabric-registry-sync-v0/build.gradle index 640b2a759..e1f8729e4 100644 --- a/fabric-registry-sync-v0/build.gradle +++ b/fabric-registry-sync-v0/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-registry-sync-v0" -version = getSubprojectVersion(project, "0.3.3") +version = getSubprojectVersion(project, "0.3.4") dependencies { compile project(path: ':fabric-api-base', configuration: 'dev') diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinIdRegistry.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinIdRegistry.java index a8833b8a7..d8e567bd9 100644 --- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinIdRegistry.java +++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinIdRegistry.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import com.google.common.collect.BiMap; @@ -41,8 +42,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import net.minecraft.util.Identifier; import net.minecraft.util.collection.Int2ObjectBiMap; +import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.SimpleRegistry; -import net.minecraft.class_5321; +import net.minecraft.util.registry.RegistryKey; import net.fabricmc.fabric.api.event.Event; import net.fabricmc.fabric.api.event.EventFactory; @@ -59,7 +61,9 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab @Shadow protected Int2ObjectBiMap<T> indexedEntries; @Shadow - protected BiMap<Identifier, T> entries; + protected BiMap<Identifier, T> entriesById; + @Shadow + protected BiMap<RegistryKey<T>, T> entriesByKey; @Shadow private int nextId; @Unique @@ -124,17 +128,17 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab @SuppressWarnings({"unchecked", "ConstantConditions"}) @Inject(method = "set", at = @At("HEAD")) - public void setPre(int id, class_5321<T> registryId, Object object, CallbackInfoReturnable info) { + public void setPre(int id, RegistryKey<T> registryId, Object object, CallbackInfoReturnable info) { int indexedEntriesId = indexedEntries.getId((T) object); if (indexedEntriesId >= 0) { throw new RuntimeException("Attempted to register object " + object + " twice! (at raw IDs " + indexedEntriesId + " and " + id + " )"); } - if (!entries.containsKey(registryId.method_29177())) { + if (!entriesById.containsKey(registryId.getValue())) { fabric_isObjectNew = true; } else { - T oldObject = entries.get(registryId.method_29177()); + T oldObject = entriesById.get(registryId.getValue()); if (oldObject != null && oldObject != object) { int oldId = indexedEntries.getId(oldObject); @@ -143,7 +147,7 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab throw new RuntimeException("Attempted to register ID " + registryId + " at different raw IDs (" + oldId + ", " + id + ")! If you're trying to override an item, use .set(), not .register()!"); } - fabric_removeObjectEvent.invoker().onEntryRemoved(oldId, registryId.method_29177(), oldObject); + fabric_removeObjectEvent.invoker().onEntryRemoved(oldId, registryId.getValue(), oldObject); fabric_isObjectNew = true; } else { fabric_isObjectNew = false; @@ -153,9 +157,9 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab @SuppressWarnings("unchecked") @Inject(method = "set", at = @At("RETURN")) - public void setPost(int id, class_5321<T> registryId, Object object, CallbackInfoReturnable info) { + public void setPost(int id, RegistryKey<T> registryId, Object object, CallbackInfoReturnable info) { if (fabric_isObjectNew) { - fabric_addObjectEvent.invoker().onEntryAdded(id, registryId.method_29177(), object); + fabric_addObjectEvent.invoker().onEntryAdded(id, registryId.getValue(), object); } } @@ -172,7 +176,7 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab List<String> strings = null; for (Identifier remoteId : remoteIndexedEntries.keySet()) { - if (!entries.keySet().contains(remoteId)) { + if (!entriesById.keySet().contains(remoteId)) { if (strings == null) { strings = new ArrayList<>(); } @@ -194,11 +198,11 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab break; } case EXACT: { - if (!entries.keySet().equals(remoteIndexedEntries.keySet())) { + if (!entriesById.keySet().equals(remoteIndexedEntries.keySet())) { List<String> strings = new ArrayList<>(); for (Identifier remoteId : remoteIndexedEntries.keySet()) { - if (!entries.keySet().contains(remoteId)) { + if (!entriesById.keySet().contains(remoteId)) { strings.add(" - " + remoteId + " (missing on local)"); } } @@ -230,7 +234,7 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab // compatibility. if (fabric_prevIndexedEntries == null) { fabric_prevIndexedEntries = new Object2IntOpenHashMap<>(); - fabric_prevEntries = HashBiMap.create(entries); + fabric_prevEntries = HashBiMap.create(entriesById); for (Object o : registry) { fabric_prevIndexedEntries.put(registry.getId(o), registry.getRawId(o)); @@ -285,7 +289,8 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab } // note: indexedEntries cannot be safely remove()d from - entries.keySet().removeAll(droppedIds); + entriesById.keySet().removeAll(droppedIds); + entriesByKey.keySet().removeIf(registryKey -> droppedIds.contains(registryKey.getValue())); break; } @@ -312,7 +317,7 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab for (Identifier identifier : orderedRemoteEntries) { int id = remoteIndexedEntries.getInt(identifier); - T object = entries.get(identifier); + T object = entriesById.get(identifier); // Warn if an object is missing from the local registry. // This should only happen in AUTHORITATIVE mode, and as such we @@ -346,19 +351,26 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab // Emit AddObject events for previously culled objects. for (Identifier id : fabric_prevEntries.keySet()) { - if (!entries.containsKey(id)) { + if (!entriesById.containsKey(id)) { assert fabric_prevIndexedEntries.containsKey(id); addedIds.add(id); } } - entries.clear(); - entries.putAll(fabric_prevEntries); + entriesById.clear(); + entriesByKey.clear(); + + entriesById.putAll(fabric_prevEntries); + + for (Map.Entry<Identifier, T> entry : fabric_prevEntries.entrySet()) { + //noinspection unchecked + entriesByKey.put(RegistryKey.of(RegistryKey.ofRegistry(((Registry) Registry.REGISTRIES).getId(this)), entry.getKey()), entry.getValue()); + } remap(name, fabric_prevIndexedEntries, RemapMode.AUTHORITATIVE); for (Identifier id : addedIds) { - fabric_getAddObjectEvent().invoker().onEntryAdded(indexedEntries.getId(entries.get(id)), id, entries.get(id)); + fabric_getAddObjectEvent().invoker().onEntryAdded(indexedEntries.getId(entriesById.get(id)), id, entriesById.get(id)); } fabric_prevIndexedEntries = null; diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinLevelStorageSession.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinLevelStorageSession.java index 0b02e2d03..94a36ade9 100644 --- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinLevelStorageSession.java +++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinLevelStorageSession.java @@ -37,7 +37,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtIo; -import net.minecraft.class_5219; +import net.minecraft.world.SaveProperties; import net.minecraft.world.level.storage.LevelStorage; import net.fabricmc.fabric.impl.registry.sync.RegistrySyncManager; @@ -121,7 +121,7 @@ public class MixinLevelStorageSession { } @Inject(method = "method_27426", at = @At("HEAD")) - public void saveWorld(class_5219 levelProperties, CompoundTag compoundTag, CallbackInfo info) { + public void saveWorld(SaveProperties saveProperties, CompoundTag compoundTag, CallbackInfo info) { if (!Files.exists(directory)) { return; } @@ -131,7 +131,7 @@ public class MixinLevelStorageSession { // TODO: stop double save on client? @Inject(method = "readLevelProperties", at = @At("HEAD")) - public void readWorldProperties(CallbackInfoReturnable<class_5219> callbackInfo) { + public void readWorldProperties(CallbackInfoReturnable<SaveProperties> callbackInfo) { // Load for (int i = 0; i < FABRIC_ID_REGISTRY_BACKUPS; i++) { FABRIC_LOGGER.trace("[fabric-registry-sync] Loading Fabric registry [file " + (i + 1) + "/" + (FABRIC_ID_REGISTRY_BACKUPS + 1) + "]"); diff --git a/fabric-renderer-indigo/build.gradle b/fabric-renderer-indigo/build.gradle index 97e7c5277..ce148c8de 100644 --- a/fabric-renderer-indigo/build.gradle +++ b/fabric-renderer-indigo/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-renderer-indigo" -version = getSubprojectVersion(project, "0.2.29") +version = getSubprojectVersion(project, "0.2.30") dependencies { compile project(path: ':fabric-api-base', configuration: 'dev') diff --git a/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/ItemRenderContext.java b/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/ItemRenderContext.java index 54b16fe9d..77771d2fa 100644 --- a/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/ItemRenderContext.java +++ b/fabric-renderer-indigo/src/main/java/net/fabricmc/fabric/impl/client/indigo/renderer/render/ItemRenderContext.java @@ -106,7 +106,7 @@ public class ItemRenderContext extends AbstractRenderContext implements RenderCo this.transformMode = transformMode; this.vanillaHandler = vanillaHandler; quadBlendMode = BlendMode.DEFAULT; - modelVertexConsumer = selectVertexConsumer(RenderLayers.getItemLayer(itemStack)); + modelVertexConsumer = selectVertexConsumer(RenderLayers.getItemLayer(itemStack, transformMode != ModelTransformation.Mode.GROUND)); matrixStack.push(); ((BakedModel) model).getTransformation().getTransformation(transformMode).apply(invert, matrixStack); diff --git a/fabric-resource-loader-v0/build.gradle b/fabric-resource-loader-v0/build.gradle index 1b9553882..20e4d7170 100644 --- a/fabric-resource-loader-v0/build.gradle +++ b/fabric-resource-loader-v0/build.gradle @@ -1,2 +1,2 @@ archivesBaseName = "fabric-resource-loader-v0" -version = getSubprojectVersion(project, "0.1.14") +version = getSubprojectVersion(project, "0.2.0") diff --git a/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/impl/resource/loader/ModResourcePackUtil.java b/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/impl/resource/loader/ModResourcePackUtil.java index 15563a7cc..7961ef042 100644 --- a/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/impl/resource/loader/ModResourcePackUtil.java +++ b/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/impl/resource/loader/ModResourcePackUtil.java @@ -21,12 +21,16 @@ import java.nio.file.Path; import java.util.List; import com.google.common.base.Charsets; +import com.google.common.collect.Lists; import org.apache.commons.io.IOUtils; import net.minecraft.SharedConstants; +import net.minecraft.client.resource.Format4ResourcePack; import net.minecraft.resource.ResourcePack; import net.minecraft.resource.ResourceType; +import net.minecraft.resource.DefaultResourcePack; +import net.fabricmc.fabric.mixin.resource.loader.MixinFormat4ResourcePack; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.ModContainer; import net.fabricmc.loader.api.metadata.ModMetadata; @@ -83,4 +87,38 @@ public final class ModResourcePackUtil { return "Fabric Mod \"" + info.getId() + "\""; } } + + public static void modifyResourcePackList(List<ResourcePack> list) { + List<ResourcePack> oldList = Lists.newArrayList(list); + list.clear(); + + boolean appended = false; + + for (int i = 0; i < oldList.size(); i++) { + ResourcePack pack = oldList.get(i); + list.add(pack); + + boolean isDefaultResources = pack instanceof DefaultResourcePack; + + if (!isDefaultResources && pack instanceof Format4ResourcePack) { + MixinFormat4ResourcePack fixer = (MixinFormat4ResourcePack) pack; + isDefaultResources = fixer.getParent() instanceof DefaultResourcePack; + } + + if (isDefaultResources) { + ModResourcePackUtil.appendModResourcePacks(list, ResourceType.CLIENT_RESOURCES); + appended = true; + } + } + + if (!appended) { + StringBuilder builder = new StringBuilder("Fabric could not find resource pack injection location!"); + + for (ResourcePack rp : oldList) { + builder.append("\n - ").append(rp.getName()).append(" (").append(rp.getClass().getName()).append(")"); + } + + throw new RuntimeException(builder.toString()); + } + } } diff --git a/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/mixin/resource/loader/MixinMinecraftGame.java b/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/mixin/resource/loader/MixinMinecraftGame.java index ba5c1b28e..37c1d3259 100644 --- a/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/mixin/resource/loader/MixinMinecraftGame.java +++ b/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/mixin/resource/loader/MixinMinecraftGame.java @@ -18,77 +18,22 @@ package net.fabricmc.fabric.mixin.resource.loader; import java.util.List; import java.util.concurrent.CompletableFuture; -import java.util.stream.Collector; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import com.google.common.collect.Lists; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.LocalCapture; -import net.minecraft.client.resource.Format4ResourcePack; -import net.minecraft.resource.DefaultResourcePack; import net.minecraft.client.MinecraftClient; -import net.minecraft.resource.ReloadableResourceManager; import net.minecraft.resource.ResourcePack; -import net.minecraft.resource.ResourceType; import net.fabricmc.fabric.impl.resource.loader.ModResourcePackUtil; @Mixin(MinecraftClient.class) public class MixinMinecraftGame { - @Shadow - private ReloadableResourceManager resourceManager; - - private void fabric_modifyResourcePackList(List<ResourcePack> list) { - List<ResourcePack> oldList = Lists.newArrayList(list); - list.clear(); - - boolean appended = false; - - for (int i = 0; i < oldList.size(); i++) { - ResourcePack pack = oldList.get(i); - list.add(pack); - - boolean isDefaultResources = pack instanceof DefaultResourcePack; - - if (!isDefaultResources && pack instanceof Format4ResourcePack) { - MixinFormat4ResourcePack fixer = (MixinFormat4ResourcePack) pack; - isDefaultResources = fixer.getParent() instanceof DefaultResourcePack; - } - - if (isDefaultResources) { - ModResourcePackUtil.appendModResourcePacks(list, ResourceType.CLIENT_RESOURCES); - appended = true; - } - } - - if (!appended) { - StringBuilder builder = new StringBuilder("Fabric could not find resource pack injection location!"); - - for (ResourcePack rp : oldList) { - builder.append("\n - ").append(rp.getName()).append(" (").append(rp.getClass().getName()).append(")"); - } - - throw new RuntimeException(builder.toString()); - } - } - - @Redirect(method = "<init>", at = @At(value = "INVOKE", target = "Ljava/util/stream/Stream;collect(Ljava/util/stream/Collector;)Ljava/lang/Object;")) - public Object initResources(Stream<ResourcePack> stream, Collector collector) { - List<ResourcePack> fabricResourcePacks = stream.collect(Collectors.toList()); - fabric_modifyResourcePackList(fabricResourcePacks); - //noinspection unchecked - return fabricResourcePacks.stream().collect(collector); - } - @Inject(method = "reloadResources", at = @At(value = "INVOKE", target = "Lnet/minecraft/resource/ReloadableResourceManager;beginMonitoredReload(Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/List;)Lnet/minecraft/resource/ResourceReloadMonitor;", ordinal = 0), locals = LocalCapture.CAPTURE_FAILHARD) public void reloadResources(CallbackInfoReturnable<CompletableFuture> info, CompletableFuture<java.lang.Void> cf, List<ResourcePack> list) { - fabric_modifyResourcePackList(list); + ModResourcePackUtil.modifyResourcePackList(list); } } diff --git a/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/mixin/resource/loader/MixinMinecraftServer.java b/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/mixin/resource/loader/MixinMinecraftServer.java index e5ddb9eee..867064bdb 100644 --- a/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/mixin/resource/loader/MixinMinecraftServer.java +++ b/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/mixin/resource/loader/MixinMinecraftServer.java @@ -16,26 +16,21 @@ package net.fabricmc.fabric.mixin.resource.loader; +import org.apache.commons.lang3.ArrayUtils; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.ModifyArg; -import net.minecraft.resource.ResourcePackManager; -import net.minecraft.resource.ResourcePackProfile; import net.minecraft.resource.ResourceType; import net.minecraft.server.MinecraftServer; +import net.minecraft.resource.ResourcePackProvider; import net.fabricmc.fabric.impl.resource.loader.ModResourcePackCreator; @Mixin(MinecraftServer.class) public class MixinMinecraftServer { - @Shadow - private ResourcePackManager<ResourcePackProfile> dataPackManager; - - @Inject(method = "loadWorldDataPacks", at = @At(value = "INVOKE", target = "Lnet/minecraft/resource/ResourcePackManager;registerProvider(Lnet/minecraft/resource/ResourcePackProvider;)V", ordinal = 1)) - public void appendFabricDataPacks(CallbackInfo info) { - dataPackManager.registerProvider(new ModResourcePackCreator(ResourceType.SERVER_DATA)); + @ModifyArg(method = "method_29438", at = @At(value = "INVOKE", target = "Lnet/minecraft/resource/ResourcePackManager;<init>(Lnet/minecraft/resource/ResourcePackProfile$Factory;[Lnet/minecraft/resource/ResourcePackProvider;)V")) + private static ResourcePackProvider[] appendFabricDataPacks(ResourcePackProvider[] packProviders) { + return ArrayUtils.add(packProviders, new ModResourcePackCreator(ResourceType.SERVER_DATA)); } } diff --git a/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/mixin/resource/loader/MixinResourcePackManager.java b/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/mixin/resource/loader/MixinResourcePackManager.java new file mode 100644 index 000000000..ece28bb01 --- /dev/null +++ b/fabric-resource-loader-v0/src/main/java/net/fabricmc/fabric/mixin/resource/loader/MixinResourcePackManager.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2016, 2017, 2018, 2019 FabricMC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.fabricmc.fabric.mixin.resource.loader; + +import java.util.ArrayList; +import java.util.List; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import net.minecraft.resource.ResourcePack; +import net.minecraft.resource.ResourcePackManager; + +import net.fabricmc.fabric.impl.resource.loader.ModResourcePackUtil; + +@Mixin(ResourcePackManager.class) +public class MixinResourcePackManager { + @Inject(method = "method_29211", at = @At("RETURN"), cancellable = true) + public void method_29211(CallbackInfoReturnable<List<ResourcePack>> infoReturnable) { + List<ResourcePack> list = new ArrayList<>(infoReturnable.getReturnValue()); + ModResourcePackUtil.modifyResourcePackList(list); + infoReturnable.setReturnValue(list); + } +} diff --git a/fabric-resource-loader-v0/src/main/resources/fabric-resource-loader-v0.mixins.json b/fabric-resource-loader-v0/src/main/resources/fabric-resource-loader-v0.mixins.json index b417665fa..30557a5d4 100644 --- a/fabric-resource-loader-v0/src/main/resources/fabric-resource-loader-v0.mixins.json +++ b/fabric-resource-loader-v0/src/main/resources/fabric-resource-loader-v0.mixins.json @@ -11,6 +11,7 @@ "client": [ "MixinFormat4ResourcePack", "MixinKeyedResourceReloadListener$Client", + "MixinResourcePackManager", "MixinMinecraftGame" ], "injectors": { diff --git a/fabric-tool-attribute-api-v1/build.gradle b/fabric-tool-attribute-api-v1/build.gradle index ccfbdc5e7..dbaf88064 100644 --- a/fabric-tool-attribute-api-v1/build.gradle +++ b/fabric-tool-attribute-api-v1/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-tool-attribute-api-v1" -version = getSubprojectVersion(project, "1.1.0") +version = getSubprojectVersion(project, "1.1.1") dependencies { compile project(path: ':fabric-api-base', configuration: 'dev') diff --git a/fabric-tool-attribute-api-v1/src/testmod/java/net/fabricmc/fabric/test/tool/attribute/ToolAttributeTest.java b/fabric-tool-attribute-api-v1/src/testmod/java/net/fabricmc/fabric/test/tool/attribute/ToolAttributeTest.java index 2ee4441d9..381c074c9 100644 --- a/fabric-tool-attribute-api-v1/src/testmod/java/net/fabricmc/fabric/test/tool/attribute/ToolAttributeTest.java +++ b/fabric-tool-attribute-api-v1/src/testmod/java/net/fabricmc/fabric/test/tool/attribute/ToolAttributeTest.java @@ -41,8 +41,9 @@ public class ToolAttributeTest implements ModInitializer { Registry.register(Registry.ITEM, new Identifier("fabric-tool-attribute-api-v1-testmod", "test_shovel"), new TestShovel(new Item.Settings())); // Register a block that requires a shovel that is as strong or stronger than an iron one. Block block = Registry.register(Registry.BLOCK, new Identifier("fabric-tool-attribute-api-v1-testmod", "hardened_block"), - new Block(FabricBlockSettings.of(new FabricMaterialBuilder(MaterialColor.SAND).requiresTool().build(), MaterialColor.STONE) + new Block(FabricBlockSettings.of(new FabricMaterialBuilder(MaterialColor.SAND).build(), MaterialColor.STONE) .breakByTool(FabricToolTags.SHOVELS, 2) + .method_29292() .strength(0.6F) .sounds(BlockSoundGroup.GRAVEL))); Registry.register(Registry.ITEM, new Identifier("fabric-tool-attribute-api-v1-testmod", "hardened_block"), new BlockItem(block, new Item.Settings()));