diff --git a/build.gradle b/build.gradle index c0376bccd..c6ffa64d2 100644 --- a/build.gradle +++ b/build.gradle @@ -30,8 +30,8 @@ minecraft { } dependencies { - minecraft "com.mojang:minecraft:18w47a" - mappings "net.fabricmc:pomf:18w47a.2" + minecraft "com.mojang:minecraft:18w47b" + mappings "net.fabricmc:pomf:18w47b.10" modCompile "net.fabricmc:fabric-loader:18w44a-0.1.0.46" } diff --git a/src/main/java/net/fabricmc/fabric/client/render/FabricBlockEntityRendererRegistry.java b/src/main/java/net/fabricmc/fabric/client/render/FabricBlockEntityRendererRegistry.java new file mode 100644 index 000000000..203eacd3a --- /dev/null +++ b/src/main/java/net/fabricmc/fabric/client/render/FabricBlockEntityRendererRegistry.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2016, 2017, 2018 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.client.render; + +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.client.render.block.entity.BlockEntityRenderManager; +import net.minecraft.client.render.block.entity.BlockEntityRenderer; + +import java.util.Map; + +public class FabricBlockEntityRendererRegistry { + public static final FabricBlockEntityRendererRegistry INSTANCE = new FabricBlockEntityRendererRegistry(); + private Map<Class<? extends BlockEntity>, BlockEntityRenderer<? extends BlockEntity>> blockEntityRenderers; + + private FabricBlockEntityRendererRegistry() { + + } + + public void setBlockEntityRendererMap(Map<Class<? extends BlockEntity>, BlockEntityRenderer<? extends BlockEntity>> map) { + if (blockEntityRenderers != null && blockEntityRenderers != map) { + throw new RuntimeException("Tried to set blockEntityRenderers twice!"); + } + + blockEntityRenderers = map; + } + + public void register(Class<? extends BlockEntity> blockEntityClass, BlockEntityRenderer<? extends BlockEntity> blockEntityRenderer) { + // TODO: warn on duplicate + blockEntityRenderers.put(blockEntityClass, blockEntityRenderer); + blockEntityRenderer.setRenderManager(BlockEntityRenderManager.instance); + } +} diff --git a/src/main/java/net/fabricmc/fabric/commands/CommandRegistry.java b/src/main/java/net/fabricmc/fabric/commands/CommandRegistry.java index 7d4848590..4101237df 100644 --- a/src/main/java/net/fabricmc/fabric/commands/CommandRegistry.java +++ b/src/main/java/net/fabricmc/fabric/commands/CommandRegistry.java @@ -17,7 +17,7 @@ package net.fabricmc.fabric.commands; import com.mojang.brigadier.CommandDispatcher; -import net.minecraft.command.ServerCommandSource; +import net.minecraft.server.command.ServerCommandSource; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/net/fabricmc/fabric/mixin/commands/MixinServerCommandManager.java b/src/main/java/net/fabricmc/fabric/mixin/commands/MixinServerCommandManager.java index 6c6fc7d49..c07e7f93d 100644 --- a/src/main/java/net/fabricmc/fabric/mixin/commands/MixinServerCommandManager.java +++ b/src/main/java/net/fabricmc/fabric/mixin/commands/MixinServerCommandManager.java @@ -18,8 +18,8 @@ package net.fabricmc.fabric.mixin.commands; import com.mojang.brigadier.CommandDispatcher; import net.fabricmc.fabric.commands.CommandRegistry; -import net.minecraft.command.ServerCommandManager; -import net.minecraft.command.ServerCommandSource; +import net.minecraft.server.command.ServerCommandManager; +import net.minecraft.server.command.ServerCommandSource; import org.apache.logging.log4j.Logger; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; diff --git a/src/main/java/net/fabricmc/fabric/mixin/networking/MixinClientPlayNetworkHandler.java b/src/main/java/net/fabricmc/fabric/mixin/networking/MixinClientPlayNetworkHandler.java index 2caa901d6..97cacdf45 100644 --- a/src/main/java/net/fabricmc/fabric/mixin/networking/MixinClientPlayNetworkHandler.java +++ b/src/main/java/net/fabricmc/fabric/mixin/networking/MixinClientPlayNetworkHandler.java @@ -21,12 +21,9 @@ import net.fabricmc.fabric.networking.CustomPayloadHandlerRegistry; import net.fabricmc.fabric.networking.PacketContext; import net.fabricmc.fabric.networking.SPacketCustomPayloadAccessor; import net.minecraft.client.MinecraftGame; -import net.minecraft.client.network.handler.ClientPlayNetworkHandler; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerServer; -import net.minecraft.network.handler.ServerPlayNetworkHandler; -import net.minecraft.network.packet.client.CPacketCustomPayload; -import net.minecraft.network.packet.server.SPacketCustomPayload; +import net.minecraft.client.network.ClientPlayNetworkHandler; +import net.minecraft.client.network.packet.CustomPayloadClientPacket; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.MinecraftServer; import net.minecraft.util.ThreadTaskQueue; import org.spongepowered.asm.mixin.Mixin; @@ -41,7 +38,7 @@ public class MixinClientPlayNetworkHandler implements PacketContext { private MinecraftGame game; @Inject(method = "onCustomPayload", at = @At("HEAD"), cancellable = true) - public void onCustomPayload(CPacketCustomPayload packet, CallbackInfo info) { + public void onCustomPayload(CustomPayloadClientPacket packet, CallbackInfo info) { if (CustomPayloadHandlerRegistry.CLIENT.accept(packet.getChannel(), this, packet.getData())) { info.cancel(); } @@ -53,7 +50,7 @@ public class MixinClientPlayNetworkHandler implements PacketContext { } @Override - public EntityPlayer getPlayer() { + public PlayerEntity getPlayer() { return game.player; } diff --git a/src/main/java/net/fabricmc/fabric/mixin/networking/MixinSPacketCustomPayload.java b/src/main/java/net/fabricmc/fabric/mixin/networking/MixinSPacketCustomPayload.java index 67ea87c5c..9f51a9839 100644 --- a/src/main/java/net/fabricmc/fabric/mixin/networking/MixinSPacketCustomPayload.java +++ b/src/main/java/net/fabricmc/fabric/mixin/networking/MixinSPacketCustomPayload.java @@ -17,13 +17,13 @@ package net.fabricmc.fabric.mixin.networking; import net.fabricmc.fabric.networking.SPacketCustomPayloadAccessor; -import net.minecraft.network.packet.server.SPacketCustomPayload; +import net.minecraft.server.network.packet.CustomPayloadServerPacket; import net.minecraft.util.Identifier; import net.minecraft.util.PacketByteBuf; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -@Mixin(SPacketCustomPayload.class) +@Mixin(CustomPayloadServerPacket.class) public class MixinSPacketCustomPayload implements SPacketCustomPayloadAccessor { @Shadow private Identifier channel; diff --git a/src/main/java/net/fabricmc/fabric/mixin/networking/MixinServerPlayNetworkHandler.java b/src/main/java/net/fabricmc/fabric/mixin/networking/MixinServerPlayNetworkHandler.java index 3704e2013..8f45e3701 100644 --- a/src/main/java/net/fabricmc/fabric/mixin/networking/MixinServerPlayNetworkHandler.java +++ b/src/main/java/net/fabricmc/fabric/mixin/networking/MixinServerPlayNetworkHandler.java @@ -20,11 +20,11 @@ import net.fabricmc.api.Side; import net.fabricmc.fabric.networking.CustomPayloadHandlerRegistry; import net.fabricmc.fabric.networking.PacketContext; import net.fabricmc.fabric.networking.SPacketCustomPayloadAccessor; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerServer; -import net.minecraft.network.handler.ServerPlayNetworkHandler; -import net.minecraft.network.packet.server.SPacketCustomPayload; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.MinecraftServer; +import net.minecraft.server.network.ServerPlayNetworkHandler; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.network.packet.CustomPayloadServerPacket; import net.minecraft.util.ThreadTaskQueue; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -37,10 +37,10 @@ public class MixinServerPlayNetworkHandler implements PacketContext { @Shadow private MinecraftServer server; @Shadow - private EntityPlayerServer player; + private ServerPlayerEntity player; @Inject(method = "onCustomPayload", at = @At("HEAD"), cancellable = true) - public void onCustomPayload(SPacketCustomPayload packet, CallbackInfo info) { + public void onCustomPayload(CustomPayloadServerPacket packet, CallbackInfo info) { SPacketCustomPayloadAccessor accessor = ((SPacketCustomPayloadAccessor) packet); if (CustomPayloadHandlerRegistry.SERVER.accept(accessor.getChannel(), this, accessor.getData())) { @@ -54,7 +54,7 @@ public class MixinServerPlayNetworkHandler implements PacketContext { } @Override - public EntityPlayer getPlayer() { + public PlayerEntity getPlayer() { return player; } diff --git a/src/main/java/net/fabricmc/fabric/mixin/registry/MixinIdRegistry.java b/src/main/java/net/fabricmc/fabric/mixin/registry/MixinIdRegistry.java index a12ed2f40..49a151653 100644 --- a/src/main/java/net/fabricmc/fabric/mixin/registry/MixinIdRegistry.java +++ b/src/main/java/net/fabricmc/fabric/mixin/registry/MixinIdRegistry.java @@ -23,8 +23,8 @@ import net.fabricmc.fabric.registry.ListenableRegistry; import net.fabricmc.fabric.registry.RegistryListener; import net.fabricmc.fabric.registry.RemapException; import net.fabricmc.fabric.registry.RemappableRegistry; -import net.minecraft.class_3513; import net.minecraft.util.Identifier; +import net.minecraft.util.Int2ObjectBiMap; import net.minecraft.util.registry.DefaultMappedRegistry; import net.minecraft.util.registry.IdRegistry; import org.apache.logging.log4j.LogManager; @@ -40,7 +40,7 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab @Shadow protected static Logger ID_LOGGER; @Shadow - protected class_3513<T> idStore; + protected Int2ObjectBiMap<T> idStore; @Shadow protected BiMap<Identifier, T> objectMap; @Shadow @@ -147,7 +147,7 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab // objectMap.put(identifier, object); } - idStore.method_15230(object, id); + idStore.put(object, id); if (nextId <= id) { nextId = id + 1; } diff --git a/src/main/java/net/fabricmc/fabric/mixin/registry/MixinServerPlayNetworkHandler.java b/src/main/java/net/fabricmc/fabric/mixin/registry/MixinServerPlayNetworkHandler.java index 437b6f798..0eecaf928 100644 --- a/src/main/java/net/fabricmc/fabric/mixin/registry/MixinServerPlayNetworkHandler.java +++ b/src/main/java/net/fabricmc/fabric/mixin/registry/MixinServerPlayNetworkHandler.java @@ -21,13 +21,11 @@ import net.fabricmc.fabric.networking.CustomPayloadHandlerRegistry; import net.fabricmc.fabric.networking.PacketContext; import net.fabricmc.fabric.networking.SPacketCustomPayloadAccessor; import net.fabricmc.fabric.registry.RegistrySyncManager; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerServer; import net.minecraft.network.ClientConnection; import net.minecraft.network.Packet; -import net.minecraft.network.handler.ServerPlayNetworkHandler; -import net.minecraft.network.packet.server.SPacketCustomPayload; import net.minecraft.server.MinecraftServer; +import net.minecraft.server.network.ServerPlayNetworkHandler; +import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.util.ThreadTaskQueue; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -41,7 +39,7 @@ public abstract class MixinServerPlayNetworkHandler { public abstract void sendPacket(Packet<?> var1); @Inject(method = "<init>", at = @At("RETURN")) - public void init(MinecraftServer server, ClientConnection connection, EntityPlayerServer player, CallbackInfo info) { + public void init(MinecraftServer server, ClientConnection connection, ServerPlayerEntity player, CallbackInfo info) { //if (server.isDedicated()) { sendPacket(RegistrySyncManager.createPacket()); //} diff --git a/src/main/java/net/fabricmc/fabric/mixin/registry/MixinWorldSaveHandler.java b/src/main/java/net/fabricmc/fabric/mixin/registry/MixinWorldSaveHandler.java index 4790154c4..6db14e64f 100644 --- a/src/main/java/net/fabricmc/fabric/mixin/registry/MixinWorldSaveHandler.java +++ b/src/main/java/net/fabricmc/fabric/mixin/registry/MixinWorldSaveHandler.java @@ -20,7 +20,7 @@ import net.fabricmc.fabric.registry.RegistrySyncManager; import net.fabricmc.fabric.registry.RemapException; import net.minecraft.nbt.TagCompound; import net.minecraft.nbt.TagStorageHelper; -import net.minecraft.world.WorldSaveHandlerOld; +import net.minecraft.world.OldWorldSaveHandler; import net.minecraft.world.level.LevelProperties; import org.apache.logging.log4j.Logger; import org.spongepowered.asm.mixin.Mixin; @@ -34,7 +34,7 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; -@Mixin(value = WorldSaveHandlerOld.class) +@Mixin(value = OldWorldSaveHandler.class) public class MixinWorldSaveHandler { private static final int ID_REGISTRY_BACKUPS = 3; diff --git a/src/main/java/net/fabricmc/fabric/mixin/render/MixinBlockEntityRenderManager.java b/src/main/java/net/fabricmc/fabric/mixin/render/MixinBlockEntityRenderManager.java new file mode 100644 index 000000000..8c5b1acb1 --- /dev/null +++ b/src/main/java/net/fabricmc/fabric/mixin/render/MixinBlockEntityRenderManager.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2016, 2017, 2018 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.render; + +import com.google.common.collect.Maps; +import net.fabricmc.fabric.client.render.FabricBlockEntityRendererRegistry; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.client.render.block.entity.BlockEntityRenderManager; +import net.minecraft.client.render.block.entity.BlockEntityRenderer; +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 java.util.Map; + +@Mixin(BlockEntityRenderManager.class) +public class MixinBlockEntityRenderManager { + @Shadow + private Map<Class<? extends BlockEntity>, BlockEntityRenderer<? extends BlockEntity>> blockEntityRenderers; + + @Inject(method = "<init>()V", at = @At("RETURN")) + public void init(CallbackInfo info) { + FabricBlockEntityRendererRegistry.INSTANCE.setBlockEntityRendererMap(blockEntityRenderers); + } +} diff --git a/src/main/java/net/fabricmc/fabric/networking/PacketContext.java b/src/main/java/net/fabricmc/fabric/networking/PacketContext.java index f027f000e..c0b28b18a 100644 --- a/src/main/java/net/fabricmc/fabric/networking/PacketContext.java +++ b/src/main/java/net/fabricmc/fabric/networking/PacketContext.java @@ -17,7 +17,7 @@ package net.fabricmc.fabric.networking; import net.fabricmc.api.Side; -import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.ThreadTaskQueue; /** @@ -27,6 +27,6 @@ import net.minecraft.util.ThreadTaskQueue; */ public interface PacketContext { Side getNetworkSide(); - EntityPlayer getPlayer(); + PlayerEntity getPlayer(); ThreadTaskQueue getTaskQueue(); } diff --git a/src/main/java/net/fabricmc/fabric/registry/RegistrySyncManager.java b/src/main/java/net/fabricmc/fabric/registry/RegistrySyncManager.java index d5c694010..ee6f8ec84 100644 --- a/src/main/java/net/fabricmc/fabric/registry/RegistrySyncManager.java +++ b/src/main/java/net/fabricmc/fabric/registry/RegistrySyncManager.java @@ -22,9 +22,8 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import net.fabricmc.fabric.networking.CustomPayloadHandlerRegistry; import net.fabricmc.fabric.networking.PacketContext; -import net.minecraft.entity.player.EntityPlayerServer; +import net.minecraft.client.network.packet.CustomPayloadClientPacket; import net.minecraft.nbt.TagCompound; -import net.minecraft.network.packet.client.CPacketCustomPayload; import net.minecraft.util.Identifier; import net.minecraft.util.PacketByteBuf; import net.minecraft.util.registry.IdRegistry; @@ -44,11 +43,11 @@ public final class RegistrySyncManager { } - public static CPacketCustomPayload createPacket() { + public static CustomPayloadClientPacket createPacket() { PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer()); buf.writeTagCompound(toTag(true)); - CPacketCustomPayload packet = new CPacketCustomPayload(ID, buf); + CustomPayloadClientPacket packet = new CustomPayloadClientPacket(ID, buf); return packet; } diff --git a/src/main/java/net/fabricmc/fabric/registry/listeners/BootstrapItemRegistryListener.java b/src/main/java/net/fabricmc/fabric/registry/listeners/BootstrapItemRegistryListener.java index 7451b8261..b91825486 100644 --- a/src/main/java/net/fabricmc/fabric/registry/listeners/BootstrapItemRegistryListener.java +++ b/src/main/java/net/fabricmc/fabric/registry/listeners/BootstrapItemRegistryListener.java @@ -19,7 +19,7 @@ package net.fabricmc.fabric.registry.listeners; import net.fabricmc.fabric.registry.ExtendedIdList; import net.fabricmc.fabric.registry.RegistryListener; import net.minecraft.item.Item; -import net.minecraft.item.block.ItemBlock; +import net.minecraft.item.block.BlockItem; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; @@ -32,8 +32,8 @@ public class BootstrapItemRegistryListener implements RegistryListener<Item> { @Override public void beforeRegistryRegistration(Registry<Item> registry, int id, Identifier identifier, Item object, boolean isNew) { // refer net.minecraft.item.Items - if (object instanceof ItemBlock) { - ((ItemBlock) object).registerBlockItemMap(Item.BLOCK_ITEM_MAP, object); + if (object instanceof BlockItem) { + ((BlockItem) object).registerBlockItemMap(Item.BLOCK_ITEM_MAP, object); } } } diff --git a/src/main/resources/net.fabricmc.fabric.mixins.client.json b/src/main/resources/net.fabricmc.fabric.mixins.client.json index e10090746..3d640ab5e 100644 --- a/src/main/resources/net.fabricmc.fabric.mixins.client.json +++ b/src/main/resources/net.fabricmc.fabric.mixins.client.json @@ -7,6 +7,7 @@ "registry.client.MixinBlockColorMap", "registry.client.MixinItemColorMap", "registry.client.MixinItemModelMap", + "render.MixinBlockEntityRenderManager", "resources.MixinMinecraftGame" ], "injectors": {