Redo rendering of the molecular assembler and it's animation
This commit is contained in:
@@ -182,7 +182,6 @@ public final class AppEng {
|
||||
((ClientHelper) proxy).clientInit();
|
||||
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityTinyTNTPrimed.TYPE, RenderTinyTNTPrimed::new);
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityFloatingItem.TYPE, RenderFloatingItem::new);
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntitySingularity.TYPE,
|
||||
m -> new ItemRenderer(m, Minecraft.getInstance().getItemRenderer()));
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityGrowingCrystal.TYPE,
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
|
||||
package appeng.core;
|
||||
|
||||
import appeng.tile.crafting.MolecularAssemblerRenderer;
|
||||
import net.minecraft.advancements.CriteriaTriggers;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.Minecraft;
|
||||
@@ -90,7 +91,6 @@ import appeng.core.features.registries.cell.CreativeCellHandler;
|
||||
import appeng.core.stats.AdvancementTriggers;
|
||||
import appeng.core.stats.AeStats;
|
||||
import appeng.core.stats.PartItemPredicate;
|
||||
import appeng.entity.EntityFloatingItem;
|
||||
import appeng.fluids.client.gui.*;
|
||||
import appeng.fluids.container.*;
|
||||
import appeng.fluids.registries.BasicFluidCellGuiHandler;
|
||||
@@ -173,6 +173,7 @@ final class Registration {
|
||||
ModelLoader.addSpecialModel(BiometricCardModel.MODEL_BASE);
|
||||
ModelLoader.addSpecialModel(MemoryCardModel.MODEL_BASE);
|
||||
DriveModel.DEPENDENCIES.forEach(ModelLoader::addSpecialModel);
|
||||
ModelLoader.addSpecialModel(MolecularAssemblerRenderer.LIGHTS_MODEL);
|
||||
|
||||
PartModels partModels = (PartModels) Api.INSTANCE.registries().partModels();
|
||||
partModels.getModels().forEach(ModelLoader::addSpecialModel);
|
||||
@@ -357,11 +358,6 @@ final class Registration {
|
||||
}
|
||||
|
||||
public void registerEntities(RegistryEvent.Register<EntityType<?>> event) {
|
||||
// Special case only used on the client-side
|
||||
EntityFloatingItem.TYPE = EntityType.Builder
|
||||
.<EntityFloatingItem>create(EntityFloatingItem::new, EntityClassification.MISC)
|
||||
.build("appliedenergistics2:floating_item");
|
||||
|
||||
final IForgeRegistry<EntityType<?>> registry = event.getRegistry();
|
||||
// TODO: Do not use the internal API
|
||||
final ApiDefinitions definitions = Api.INSTANCE.definitions();
|
||||
@@ -372,12 +368,15 @@ final class Registration {
|
||||
public void registerParticleTypes(RegistryEvent.Register<ParticleType<?>> event) {
|
||||
final IForgeRegistry<ParticleType<?>> registry = event.getRegistry();
|
||||
registry.register(ChargedOreFX.TYPE);
|
||||
registry.register(VibrantFX.TYPE);
|
||||
registry.register(CraftingFx.TYPE);
|
||||
registry.register(EnergyFx.TYPE);
|
||||
registry.register(LightningArcFX.TYPE);
|
||||
registry.register(LightningFX.TYPE);
|
||||
registry.register(MatterCannonFX.TYPE);
|
||||
registry.register(VibrantFX.TYPE);
|
||||
}
|
||||
|
||||
public void registerParticleFactories(ParticleFactoryRegisterEvent event) {
|
||||
Minecraft.getInstance().particles.registerFactory(AssemblerFX.TYPE, AssemblerFX.Factory::new);
|
||||
Minecraft.getInstance().particles.registerFactory(ChargedOreFX.TYPE, ChargedOreFX.Factory::new);
|
||||
Minecraft.getInstance().particles.registerFactory(CraftingFx.TYPE, CraftingFx.Factory::new);
|
||||
Minecraft.getInstance().particles.registerFactory(EnergyFx.TYPE, EnergyFx.Factory::new);
|
||||
|
||||
@@ -22,6 +22,7 @@ import static appeng.block.AEBaseBlock.defaultProps;
|
||||
import static appeng.block.crafting.AbstractCraftingUnitBlock.CraftingUnitType;
|
||||
import static appeng.decorative.solid.BlockSkyStone.SkystoneType;
|
||||
|
||||
import appeng.tile.crafting.*;
|
||||
import net.minecraft.block.*;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
@@ -69,10 +70,6 @@ import appeng.entity.EntityTinyTNTPrimed;
|
||||
import appeng.fluids.block.BlockFluidInterface;
|
||||
import appeng.fluids.tile.TileFluidInterface;
|
||||
import appeng.hooks.DispenserBehaviorTinyTNT;
|
||||
import appeng.tile.crafting.TileCraftingMonitorTile;
|
||||
import appeng.tile.crafting.TileCraftingStorageTile;
|
||||
import appeng.tile.crafting.TileCraftingTile;
|
||||
import appeng.tile.crafting.TileMolecularAssembler;
|
||||
import appeng.tile.grindstone.TileCrank;
|
||||
import appeng.tile.grindstone.TileGrinder;
|
||||
import appeng.tile.misc.*;
|
||||
@@ -459,18 +456,18 @@ public final class ApiBlocks implements IBlocks {
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Override
|
||||
public void customize(IBlockRendering rendering, IItemRendering itemRendering) {
|
||||
// FIXME: This is an old comment, check if it still applies
|
||||
/**
|
||||
* NOTE: This is only used to determine how to render an item being held in
|
||||
* hand. For determining block rendering, the method below is used
|
||||
* (canRenderInLayer).
|
||||
*/
|
||||
rendering.renderType(RenderType.getCutout());
|
||||
rendering.renderType(rt -> rt == RenderType.getCutout() || rt == RenderType.getTranslucent());
|
||||
}
|
||||
})
|
||||
.tileEntity(registry
|
||||
.tileEntity("molecular_assembler", TileMolecularAssembler.class, TileMolecularAssembler::new)
|
||||
.rendering(new TileEntityRenderingCustomizer<TileMolecularAssembler>() {
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void customize(TileEntityRendering<TileMolecularAssembler> rendering) {
|
||||
rendering.tileEntityRenderer(MolecularAssemblerRenderer::new);
|
||||
}
|
||||
})
|
||||
.build())
|
||||
.build();
|
||||
|
||||
|
||||
@@ -18,35 +18,28 @@
|
||||
|
||||
package appeng.core.sync.packets;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import appeng.api.storage.data.IAEItemStack;
|
||||
import appeng.core.sync.AppEngPacket;
|
||||
import appeng.core.sync.network.INetworkInfo;
|
||||
import appeng.tile.crafting.AssemblerAnimationStatus;
|
||||
import appeng.tile.crafting.TileMolecularAssembler;
|
||||
import appeng.util.item.AEItemStack;
|
||||
import io.netty.buffer.Unpooled;
|
||||
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
import appeng.api.storage.data.IAEItemStack;
|
||||
import appeng.client.EffectType;
|
||||
import appeng.core.AppEng;
|
||||
import appeng.core.sync.AppEngPacket;
|
||||
import appeng.core.sync.network.INetworkInfo;
|
||||
import appeng.util.item.AEItemStack;
|
||||
|
||||
public class PacketAssemblerAnimation extends AppEngPacket {
|
||||
|
||||
private final int x;
|
||||
private final int y;
|
||||
private final int z;
|
||||
private final BlockPos pos;
|
||||
public final byte rate;
|
||||
public final IAEItemStack is;
|
||||
|
||||
public PacketAssemblerAnimation(final PacketBuffer stream) {
|
||||
this.x = stream.readInt();
|
||||
this.y = stream.readInt();
|
||||
this.z = stream.readInt();
|
||||
this.pos = stream.readBlockPos();
|
||||
this.rate = stream.readByte();
|
||||
this.is = AEItemStack.fromPacket(stream);
|
||||
}
|
||||
@@ -57,9 +50,7 @@ public class PacketAssemblerAnimation extends AppEngPacket {
|
||||
final PacketBuffer data = new PacketBuffer(Unpooled.buffer());
|
||||
|
||||
data.writeInt(this.getPacketID());
|
||||
data.writeInt(this.x = pos.getX());
|
||||
data.writeInt(this.y = pos.getY());
|
||||
data.writeInt(this.z = pos.getZ());
|
||||
data.writeBlockPos(this.pos = pos);
|
||||
data.writeByte(this.rate = rate);
|
||||
is.writeToPacket(data);
|
||||
this.is = is;
|
||||
@@ -70,11 +61,10 @@ public class PacketAssemblerAnimation extends AppEngPacket {
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void clientPacketData(final INetworkInfo network, final PlayerEntity player) {
|
||||
final double d0 = 0.5d;// + ((double) (Platform.getRandomFloat() - 0.5F) * 0.26D);
|
||||
final double d1 = 0.5d;// + ((double) (Platform.getRandomFloat() - 0.5F) * 0.26D);
|
||||
final double d2 = 0.5d;// + ((double) (Platform.getRandomFloat() - 0.5F) * 0.26D);
|
||||
|
||||
AppEng.proxy.spawnEffect(EffectType.Assembler, player.getEntityWorld(), this.x + d0, this.y + d1, this.z + d2,
|
||||
this);
|
||||
TileEntity te = player.getEntityWorld().getTileEntity(pos);
|
||||
if (te instanceof TileMolecularAssembler) {
|
||||
TileMolecularAssembler ma = (TileMolecularAssembler) te;
|
||||
ma.setAnimationStatus(new AssemblerAnimationStatus(rate, is.asItemStackRepresentation()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user