diff --git a/build.gradle b/build.gradle index 0054f55c4..9fd7aeb59 100644 --- a/build.gradle +++ b/build.gradle @@ -27,7 +27,7 @@ targetCompatibility = 1.8 archivesBaseName = "fabric" def baseVersion = "0.1.5" -def mcVersion = "19w04b" +def mcVersion = "19w05a" def ENV = System.getenv() version = baseVersion + "." + (ENV.BUILD_NUMBER ?: "local") @@ -38,8 +38,8 @@ minecraft { dependencies { minecraft "com.mojang:minecraft:$mcVersion" - mappings "net.fabricmc:yarn:$mcVersion.1" - modCompile "net.fabricmc:fabric-loader:0.3.3.101" + mappings "net.fabricmc:yarn:$mcVersion.3" + modCompile "net.fabricmc:fabric-loader:0.3.4.104" } task sourcesJar(type: Jar, dependsOn: classes) { diff --git a/src/main/java/net/fabricmc/fabric/api/client/gui/GuiFactory.java b/src/main/java/net/fabricmc/fabric/api/client/gui/GuiFactory.java index 593777a71..766f4d781 100644 --- a/src/main/java/net/fabricmc/fabric/api/client/gui/GuiFactory.java +++ b/src/main/java/net/fabricmc/fabric/api/client/gui/GuiFactory.java @@ -16,12 +16,12 @@ package net.fabricmc.fabric.api.client.gui; -import net.minecraft.client.gui.ContainerGui; +import net.minecraft.client.gui.ContainerScreen; import net.minecraft.container.Container; @FunctionalInterface public interface GuiFactory<C extends Container> { - ContainerGui create(C container); + ContainerScreen create(C container); } diff --git a/src/main/java/net/fabricmc/fabric/api/client/gui/GuiProviderRegistry.java b/src/main/java/net/fabricmc/fabric/api/client/gui/GuiProviderRegistry.java index 1c9c7bcf2..573135f55 100644 --- a/src/main/java/net/fabricmc/fabric/api/client/gui/GuiProviderRegistry.java +++ b/src/main/java/net/fabricmc/fabric/api/client/gui/GuiProviderRegistry.java @@ -19,7 +19,7 @@ package net.fabricmc.fabric.api.client.gui; import net.fabricmc.fabric.api.container.ContainerFactory; import net.fabricmc.fabric.api.container.ContainerProviderRegistry; import net.fabricmc.fabric.impl.client.gui.GuiProviderImpl; -import net.minecraft.client.gui.ContainerGui; +import net.minecraft.client.gui.ContainerScreen; import net.minecraft.container.Container; import net.minecraft.util.Identifier; @@ -29,7 +29,7 @@ public interface GuiProviderRegistry { /** * - * Register a "Container -> ContainerGui" factory. This is used only on the client side. + * Register a "Container -> ContainerScreen" factory. This is used only on the client side. * * @param identifier a shared identifier, this identifier should also be used to register a container using {@link ContainerProviderRegistry} * @param guiFactory the supplier that should be used to create the new gui @@ -38,12 +38,12 @@ public interface GuiProviderRegistry { /** * - * Register a "packet -> ContainerGui" factory. This is used only on the client side, and allows you + * Register a "packet -> ContainerScreen" factory. This is used only on the client side, and allows you * to override the default behaviour of re-using the existing "packet -> Container" logic. * * @param identifier a shared identifier, this identifier should also be used to register a container using {@link ContainerProviderRegistry} - * @param factory the gui factory, this should return a new {@link ContainerGui} + * @param factory the gui factory, this should return a new {@link ContainerScreen} */ - void registerFactory(Identifier identifier, ContainerFactory<ContainerGui> factory); + void registerFactory(Identifier identifier, ContainerFactory<ContainerScreen> factory); } diff --git a/src/main/java/net/fabricmc/fabric/client/itemgroup/FabricCreativeGuiComponents.java b/src/main/java/net/fabricmc/fabric/client/itemgroup/FabricCreativeGuiComponents.java index 8cc26415e..af5eaef24 100644 --- a/src/main/java/net/fabricmc/fabric/client/itemgroup/FabricCreativeGuiComponents.java +++ b/src/main/java/net/fabricmc/fabric/client/itemgroup/FabricCreativeGuiComponents.java @@ -18,7 +18,7 @@ package net.fabricmc.fabric.client.itemgroup; import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.ingame.CreativePlayerInventoryGui; +import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.resource.language.I18n; import net.minecraft.item.ItemGroup; @@ -42,14 +42,14 @@ public class FabricCreativeGuiComponents { public static class ItemGroupButtonWidget extends ButtonWidget { CreativeGuiExtensions extensions; - CreativePlayerInventoryGui gui; + CreativePlayerInventoryScreen gui; Type type; public ItemGroupButtonWidget(int id, int x, int y, Type type, CreativeGuiExtensions extensions) { super(id, x, y, 10, 11, type.text); this.extensions = extensions; this.type = type; - this.gui = (CreativePlayerInventoryGui) extensions; + this.gui = (CreativePlayerInventoryScreen) extensions; } @Override diff --git a/src/main/java/net/fabricmc/fabric/entity/FabricEntityTypeBuilder.java b/src/main/java/net/fabricmc/fabric/entity/FabricEntityTypeBuilder.java index 2c015c1c5..1dbc4615e 100644 --- a/src/main/java/net/fabricmc/fabric/entity/FabricEntityTypeBuilder.java +++ b/src/main/java/net/fabricmc/fabric/entity/FabricEntityTypeBuilder.java @@ -17,15 +17,19 @@ package net.fabricmc.fabric.entity; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityCategory; import net.minecraft.entity.EntityType; import net.minecraft.entity.EntityType.Builder; import net.minecraft.world.World; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.util.function.Function; // TODO: javadocs public class FabricEntityTypeBuilder<T extends Entity> { - private final Class<? extends T> entityClass; + private static final Logger LOGGER = LogManager.getLogger(); + private final EntityCategory category; private final Function<? super World, ? extends T> function; private boolean saveable = true; private boolean summonable = true; @@ -34,19 +38,37 @@ public class FabricEntityTypeBuilder<T extends Entity> { private boolean alwaysUpdateVelocity = true; private float width = -1.0f, height = -1.0f; + @Deprecated protected FabricEntityTypeBuilder(Class<? extends T> entityClass, Function<? super World, ? extends T> function) { - this.entityClass = entityClass; + LOGGER.warn("[FabricEntityTypeBuilder] Please specify EntityCategory for " + entityClass.getName() + "!"); + this.category = EntityCategory.MISC; this.function = function; } + protected FabricEntityTypeBuilder(EntityCategory category, Function<? super World, ? extends T> function) { + this.category = category; + this.function = function; + } + + @Deprecated public static <T extends Entity> FabricEntityTypeBuilder<T> create(Class<? extends T> entityClass) { return new FabricEntityTypeBuilder<>(entityClass, (w) -> null); } + @Deprecated public static <T extends Entity> FabricEntityTypeBuilder<T> create(Class<? extends T> entityClass, Function<? super World, ? extends T> function) { + LOGGER.warn("[FabricEntityTypeBuilder] Please specify EntityCategory for " + entityClass.getName() + "!"); return new FabricEntityTypeBuilder<>(entityClass, function); } + public static <T extends Entity> FabricEntityTypeBuilder<T> create(EntityCategory category) { + return new FabricEntityTypeBuilder<>(category, (w) -> null); + } + + public static <T extends Entity> FabricEntityTypeBuilder<T> create(EntityCategory category, Function<? super World, ? extends T> function) { + return new FabricEntityTypeBuilder<>(category, function); + } + public FabricEntityTypeBuilder<T> disableSummon() { this.summonable = false; return this; @@ -85,7 +107,7 @@ public class FabricEntityTypeBuilder<T extends Entity> { // TODO: Flesh out once modded datafixers exist. } - EntityType<T> type = new EntityType<>(this.entityClass, this.function, this.saveable, this.summonable, null, this.width, this.height); + EntityType<T> type = new EntityType<T>(this.function, this.category, this.saveable, this.summonable, null, this.width, this.height); if (trackingDistance != -1) { EntityTrackingRegistry.INSTANCE.register(type, trackingDistance, updateIntervalTicks, alwaysUpdateVelocity); } diff --git a/src/main/java/net/fabricmc/fabric/impl/client/gui/GuiProviderImpl.java b/src/main/java/net/fabricmc/fabric/impl/client/gui/GuiProviderImpl.java index 90af1010e..b1fd8cbac 100644 --- a/src/main/java/net/fabricmc/fabric/impl/client/gui/GuiProviderImpl.java +++ b/src/main/java/net/fabricmc/fabric/impl/client/gui/GuiProviderImpl.java @@ -23,7 +23,7 @@ import net.fabricmc.fabric.api.client.gui.GuiFactory; import net.fabricmc.fabric.impl.container.ContainerProviderImpl; import net.fabricmc.fabric.networking.CustomPayloadPacketRegistry; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.ContainerGui; +import net.minecraft.client.gui.ContainerScreen; import net.minecraft.container.Container; import net.minecraft.util.Identifier; import org.apache.logging.log4j.LogManager; @@ -42,9 +42,9 @@ public class GuiProviderImpl implements GuiProviderRegistry { private static final Logger LOGGER = LogManager.getLogger(); private static final Identifier OPEN_CONTAINER = new Identifier("fabric", "open_container"); - private static final Map<Identifier, ContainerFactory<ContainerGui>> FACTORIES = new HashMap<>(); + private static final Map<Identifier, ContainerFactory<ContainerScreen>> FACTORIES = new HashMap<>(); - public void registerFactory(Identifier identifier, ContainerFactory<ContainerGui> factory) { + public void registerFactory(Identifier identifier, ContainerFactory<ContainerScreen> factory) { if (FACTORIES.containsKey(identifier)) { throw new RuntimeException("A factory has already been registered as " + identifier + "!"); } @@ -68,14 +68,14 @@ public class GuiProviderImpl implements GuiProviderRegistry { Identifier identifier = packetByteBuf.readIdentifier(); int syncId = packetByteBuf.readUnsignedByte(); MinecraftClient.getInstance().execute(() -> { - ContainerFactory<ContainerGui> factory = FACTORIES.get(identifier); + ContainerFactory<ContainerScreen> factory = FACTORIES.get(identifier); if (factory == null) { LOGGER.error("No GUI factory found for {}!", identifier.toString()); return; } - ContainerGui gui = factory.create(syncId, identifier, packetContext.getPlayer(), packetByteBuf); + ContainerScreen gui = factory.create(syncId, identifier, packetContext.getPlayer(), packetByteBuf); packetContext.getPlayer().container = gui.getContainer(); - MinecraftClient.getInstance().openGui(gui); + MinecraftClient.getInstance().openScreen(gui); }); }); } diff --git a/src/main/java/net/fabricmc/fabric/mixin/client/itemgroup/MixinCreativePlayerInventoryGui.java b/src/main/java/net/fabricmc/fabric/mixin/client/itemgroup/MixinCreativePlayerInventoryGui.java index 0fb3ed0a8..92db143f4 100644 --- a/src/main/java/net/fabricmc/fabric/mixin/client/itemgroup/MixinCreativePlayerInventoryGui.java +++ b/src/main/java/net/fabricmc/fabric/mixin/client/itemgroup/MixinCreativePlayerInventoryGui.java @@ -18,8 +18,8 @@ package net.fabricmc.fabric.mixin.client.itemgroup; import net.fabricmc.fabric.client.itemgroup.CreativeGuiExtensions; import net.fabricmc.fabric.client.itemgroup.FabricCreativeGuiComponents; -import net.minecraft.client.gui.ingame.AbstractPlayerInventoryGui; -import net.minecraft.client.gui.ingame.CreativePlayerInventoryGui; +import net.minecraft.client.gui.ingame.AbstractPlayerInventoryScreen; +import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen; import net.minecraft.container.Container; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemGroup; @@ -31,8 +31,8 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(CreativePlayerInventoryGui.class) -public abstract class MixinCreativePlayerInventoryGui extends AbstractPlayerInventoryGui implements CreativeGuiExtensions { +@Mixin(CreativePlayerInventoryScreen.class) +public abstract class MixinCreativePlayerInventoryGui extends AbstractPlayerInventoryScreen implements CreativeGuiExtensions { public MixinCreativePlayerInventoryGui(Container container_1, PlayerInventory playerInventory_1, TextComponent textComponent_1) { super(container_1, playerInventory_1, textComponent_1); diff --git a/src/test/java/net/fabricmc/fabric/containers/ContainerModClient.java b/src/test/java/net/fabricmc/fabric/containers/ContainerModClient.java index d1ac74283..c851a9c9f 100644 --- a/src/test/java/net/fabricmc/fabric/containers/ContainerModClient.java +++ b/src/test/java/net/fabricmc/fabric/containers/ContainerModClient.java @@ -19,7 +19,7 @@ package net.fabricmc.fabric.containers; import com.mojang.blaze3d.platform.GlStateManager; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.gui.GuiProviderRegistry; -import net.minecraft.client.gui.ContainerGui; +import net.minecraft.client.gui.ContainerScreen; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.text.StringTextComponent; import net.minecraft.util.Identifier; @@ -32,22 +32,22 @@ public class ContainerModClient implements ClientModInitializer { //Registers a gui factory that opens our example gui, this reads the block pos from the buffer GuiProviderRegistry.INSTANCE.registerFactory(ContainerMod.EXAMPLE_CONTAINER, (syncId, identifier, player, buf) -> { BlockPos pos = buf.readBlockPos(); - return new ExampleContainerGui(syncId, pos, player); + return new ExampleContainerScreen(syncId, pos, player); }); //Registers a gui factory that opens our example gui, this uses the container created by ContainerProviderRegistry - GuiProviderRegistry.INSTANCE.registerFactory(ContainerMod.EXAMPLE_CONTAINER_2, ExampleContainerGui2::new); + GuiProviderRegistry.INSTANCE.registerFactory(ContainerMod.EXAMPLE_CONTAINER_2, ExampleContainerScreen2::new); //Registers a gui factory that opens our example inventory gui - GuiProviderRegistry.INSTANCE.registerFactory(ContainerMod.EXAMPLE_INVENTORY_CONTAINER, ExampleInventoryContainerGui::new); + GuiProviderRegistry.INSTANCE.registerFactory(ContainerMod.EXAMPLE_INVENTORY_CONTAINER, ExampleInventoryContainerScreen::new); } //A container gui that shows the block pos that was sent - public static class ExampleContainerGui extends ContainerGui<ContainerMod.ExampleContainer> { + public static class ExampleContainerScreen extends ContainerScreen<ContainerMod.ExampleContainer> { BlockPos pos; - public ExampleContainerGui(int syncId, BlockPos pos, PlayerEntity playerEntity) { + public ExampleContainerScreen(int syncId, BlockPos pos, PlayerEntity playerEntity) { super(new ContainerMod.ExampleContainer(syncId, pos, playerEntity), playerEntity.inventory, new StringTextComponent("Example GUI")); this.pos = pos; } @@ -60,11 +60,11 @@ public class ContainerModClient implements ClientModInitializer { //A container gui that shows how you can take in a container provided by a GuiFactory - public static class ExampleContainerGui2 extends ContainerGui<ContainerMod.ExampleContainer> { + public static class ExampleContainerScreen2 extends ContainerScreen<ContainerMod.ExampleContainer> { BlockPos pos; - public ExampleContainerGui2(ContainerMod.ExampleContainer container) { + public ExampleContainerScreen2(ContainerMod.ExampleContainer container) { super(container, container.playerInventory, new StringTextComponent("Example GUI 2")); this.pos = container.pos; } @@ -76,11 +76,11 @@ public class ContainerModClient implements ClientModInitializer { } //A container gui that has the player's inventory - public static class ExampleInventoryContainerGui extends ContainerGui<ContainerMod.ExampleInventoryContainer> { + public static class ExampleInventoryContainerScreen extends ContainerScreen<ContainerMod.ExampleInventoryContainer> { private static final Identifier BG_TEXTURE = new Identifier("textures/gui/container/horse.png"); - public ExampleInventoryContainerGui(ContainerMod.ExampleInventoryContainer container) { + public ExampleInventoryContainerScreen(ContainerMod.ExampleInventoryContainer container) { super(container, container.playerInventory, new StringTextComponent("Example Inventory GUI")); }