Jump to content

[1.10.2][1.9.4] Blockbuster - simple machinimas and cinematics for Minecraft


Recommended Posts

Posted

Hello there! :)

 

I'm proud to introduce to you my first published mod, meet Blockbuster mod!

 

Blockbuster will let you capture some basic machinimas (without having to hire/organize crowd of actors and cameras), and create some scripted cinematics (simple yet) for your adventure maps.

 

My mod's player's capturing mod is based on Mocap's source code. Author of this mod gave me permission to use his code.

 

The instruction and all information about the mod is hosted here (I'll create video later):

https://github.com/mchorse/blockbuster/blob/master/README.md

 

Download mod jar and adventure map here:

https://github.com/mchorse/blockbuster/releases/tag/pre-1.0

 

I tested my mod on OS X 10.10, but it should work on Windows and *nix too.

 

What do you think? Any issues/errors/crashes with mod? Any suggestions (I have some list of ideas, so there's a lot of room to grow 8) )?

 

Thank you for attention! :)

 

P.S.: Pun intended.

Blockbuster – simple machinimas and cinematics for Minecraft
Posted

Hello!  Glad to see someone is still working on a Mocap mod.

I have a question:

Are you planning to go to 1.9.4 once you have things ironed out?

 

and a suggestion:

A flag in the /play command that, when set, makes the actor entity invulnerable.

Would be useful for preventing players from messing with a cutscene, or making recordings of a wizard or such walking through deadly things like lava.

Posted

Hello!  Glad to see someone is still working on a Mocap mod.

I have a question:

Are you planning to go to 1.9.4 once you have things ironed out?

 

Sure! Right now I'm working on a overview/tutorial video for my mod, and then I'll start working on support for 1.9.4. By the way, what is difference between 1.9 and 1.9.4? Is it performance mostly or there are some new features?

 

A flag in the /play command that, when set, makes the actor entity invulnerable.

Would be useful for preventing players from messing with a cutscene, or making recordings of a wizard or such walking through deadly things like lava.

 

Good idea, I'll add this feature. Done.

Blockbuster – simple machinimas and cinematics for Minecraft
Posted

By the way, what is difference between 1.9 and 1.9.4? Is it performance mostly or there are some new features?

Well, according to the Minecraft wiki:

 

1.9.1 added elytra sound effects, the generic.armorToughness stat, and made the crosshair attack indicator visible by default, as well as other minor changes and bugfixes.

1.9.2 was released soon thereafter to fix a crash in 1.9.1, when riding boats and minecarts on Realms servers.

1.9.3 was released to fix several stability issues, add the /stopsound command, and to implement a blacklist for servers not in conformance with the Minecraft EULA.

1.9.4 was released soon thereafter to fix an erroneous Realms warning.

 

So it was a bit of both.

Glad to hear about the invulnerability.

Can Blockbuster record players using the Elytra?

 

Posted
Can Blockbuster record players using the Elytra?

 

I've just added it in the last commit, you can "gradlew build" to get jar with elytra recording.

 

Edit: it's really close to public release 1.0, first I'll publish the demo & tutorial video, and then release.

Blockbuster – simple machinimas and cinematics for Minecraft
Posted

Edit: it's really close to public release 1.0, first I'll publish the demo & tutorial video, and then release.

Great to hear!

I think I should tell you, I did load it into an Eclipse instance and play with it.

One of the things I tried doing was porting it to 1.9.4.

I appear to have succeeded, it's working properly.

 

Except that it won't build for me for some reason, the log seems to indicate that it's the § in ChatAction.  No idea what to do there.

I've put the source with my changes here so you can see what I did (I don't really know how to use Github, sorry):

https://dl.dropboxusercontent.com/u/58854535/src.zip

 

It was mostly name changes for functions and one field.

writeToNBT changed for tile entities, it needs to return an NBTTagCompound now. 

You might want to take a look at that, I'm not sure my solution to that change was the most elegant. (It seems to work though, it saved and loaded properly)

I am pretty much an amateur, after all.

Posted
I think I should tell you, I did load it into an Eclipse instance and play with it.

One of the things I tried doing was porting it to 1.9.4.

I appear to have succeeded, it's working properly.

Wow, that's great, means less work. :D

 

I don't really know how to use Github, sorry

It's totally fine.

 

I am pretty much an amateur, after all.

Hey, I'm amateur too, at least in Minecraft modding, I started one month ago :D

 

the log seems to indicate that it's the § in ChatAction

I did a little workaround to enable text formatting in chat while recording chat messages. When you type '[' it would be replaced as '§' and will allow to use minecraft text formatting. You have this problem in log, because, it seems to me, your eclipse doesn't do UTF (when I opened your zip, it had kind of this <?> (used to represent missing representation AFAIK) symbol).

 

Edit: Did some testing on 1.9.4, it's not fully ready, there's some corruption recording code, I'll work on it after release.

Blockbuster – simple machinimas and cinematics for Minecraft
Posted

I did a little workaround to enable text formatting in chat while recording chat messages. When you type '[' it would be replaced as '§' and will allow to use minecraft text formatting. You have this problem in log, because, it seems to me, your eclipse doesn't do UTF (when I opened your zip, it had kind of this <?> (used to represent missing representation AFAIK) symbol).

Yeah, I figured out what it did pretty quickly.  I just couldn't understand why my eclipse/gradle didn't like it.

I did manage to make it work after looking at the encoding stuff, so thank you.

 

Edit: Did some testing on 1.9.4, it's not fully ready, there's some corruption recording code, I'll work on it after release.

Well, I'm still glad to have helped at all.

I look forward to the possibilities that will open up when the mod is ready.

Posted
Well, I'm still glad to have helped at all.

I look forward to the possibilities that will open up when the mod is ready.

 

Thank you! By the way, I've just figured out why there was the corruption with the recording code. Basically when I refactored action code, I forgot to override one method. In turn, the whole playback in those places were read wrong, so it was my fault. Right now everything should work as expected.

 

I'm planning to publish video and mod today or tomorrow (but not promising).

 

Edit: uploading video to YouTube, release really soon!

Blockbuster – simple machinimas and cinematics for Minecraft
  • 3 weeks later...
Posted

Update 1.1 is out! Change log:

 

– GUIs for director blocks

– Improved actor and camera configuration GUIs

– Extended place block action (and broke the compatibility with 1.0)

– Better camera model (IMO)

– Works on dedicated server (fix)

 

Download mod:

https://github.com/mchorse/blockbuster/releases/tag/1.1

 

Tutorial video:

Blockbuster – simple machinimas and cinematics for Minecraft
  • 4 weeks later...
  • 1 month later...
Posted

Dang it, forgot to update this forum post again  :(

 

1.3 update was released. This update is focused on giving actors custom look. It introduces custom models and player morphing! It also changes the way director block works, making director map block useless (hence removed).  :D

 

This update supports both 1.9.4 and 1.10.2 versions.

 

YouTube tutorial link:

 

Download and change log link:

https://github.com/mchorse/blockbuster/releases/tag/1.3

Blockbuster – simple machinimas and cinematics for Minecraft

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • https://privatebin.net/?0b840573a8db7fcb#8DPu21Wo8wdqDU4nNm1rTrv4GY7qpfDGR87zyWHiNLpB
    • I am writing a code that stores String List in a player capability. And I need to sync it to client so I could access it via Minecraft.getMinecraft.player. I use messages for that and everything works fine until I work with the PlayerClone event. According to the logs it should work just fine but for some reason it just doesn't. You need to reconnect to the world to resync everything (messages do work when I use it in PlayerLoggedInEvent). Here is my code:   CapabilitySync.java public class CapabilitySync { @SubscribeEvent public void onPlayerLogsIn(PlayerLoggedInEvent event) { EntityPlayer player = event.player; //That thing works just fine NetworkHandler.channel.sendTo(new ServerToClient(player), (EntityPlayerMP) player); } @SubscribeEvent public void onPlayerClone(PlayerEvent.Clone event) { EntityPlayer player = event.getEntityPlayer(); IFolder folder = player.getCapability(FolderProvider.FOLDER_CAP, null); IFolder oldfolder = event.getOriginal().getCapability(FolderProvider.FOLDER_CAP, null); folder.setFolders(oldfolder.getFolders()); // This part doesn't work NetworkHandler.channel.sendTo(new ServerToClient(player), (EntityPlayerMP) player); } } NetworkHandler.java public class NetworkHandler { public static SimpleNetworkWrapper channel = NetworkRegistry.INSTANCE.newSimpleChannel(Reference.MODID); public static void init() { channel.registerMessage(ClientToServer.Handler.class, ClientToServer.class, 0, Side.SERVER); channel.registerMessage(ServerToClient.Handler.class, ServerToClient.class, 1, Side.CLIENT); } public static IThreadListener getThreadListener(MessageContext ctx) { return ctx.side == Side.SERVER ? (WorldServer) ctx.getServerHandler().player.world : getClientThreadListener(); } @SideOnly(Side.CLIENT) public static IThreadListener getClientThreadListener() { return Minecraft.getMinecraft(); } } ClientToServer / ServerToClient messages public class ClientToServer implements IMessage { private List<String> folders; private int folders_count; public ClientToServer () {} public ClientToServer (IFolder folder) { this.folders = folder.getFolders(); this.folders_count = folder.size(); } @Override public void fromBytes(ByteBuf buf) { folders = new ArrayList<>(); folders_count = buf.readInt(); for (int i = 0; i < folders_count; i++) { folders.add(ByteBufUtils.readUTF8String(buf)); } } @Override public void toBytes(ByteBuf buf) { buf.writeInt(folders_count); for (int i = 0; i < folders_count; i++) { ByteBufUtils.writeUTF8String(buf, folders.get(i)); } } public List<String> getFolders (){ return this.folders; } public static class Handler implements IMessageHandler<ClientToServer, IMessage> { @Override public IMessage onMessage(ClientToServer message, MessageContext ctx) { EntityPlayerMP serverPlayer = ctx.getServerHandler().player; NetworkHandler.getThreadListener(ctx).addScheduledTask(() -> { IFolder old_folders = serverPlayer.getCapability(FolderProvider.FOLDER_CAP, null); List<String> new_folders = message.getFolders(); old_folders.setFolders(new_folders); }); return null; } } } public class ServerToClient implements IMessage { private List<String> folders; private int folders_count; public ServerToClient() {} public ServerToClient(EntityPlayer server_player) { this.folders = server_player.getCapability(FolderProvider.FOLDER_CAP, null).getFolders(); this.folders_count = folders.size(); } @Override public void fromBytes(ByteBuf buf) { folders = new ArrayList<>(); folders_count = buf.readInt(); for (int i = 0; i < folders_count; i++) { folders.add(ByteBufUtils.readUTF8String(buf)); } } @Override public void toBytes(ByteBuf buf) { buf.writeInt(folders_count); for (int i = 0; i < folders_count; i++) { ByteBufUtils.writeUTF8String(buf, folders.get(i)); } } public List<String> getFolders (){ return this.folders; } public static class Handler implements IMessageHandler<ServerToClient, IMessage> { @Override public IMessage onMessage(ServerToClient message, MessageContext ctx) { NetworkHandler.getThreadListener(ctx).addScheduledTask(() -> { Minecraft mc = Minecraft.getMinecraft(); IFolder old_folders = mc.player.getCapability(FolderProvider.FOLDER_CAP, null); List<String> new_folders = message.getFolders(); old_folders.setFolders(new_folders); }); return null; } } ClientProxy.java (where I access the capability through a client player) public class ClientProxy extends CommonProxy { @SubscribeEvent public void onKeyInput(KeyInputEvent event) { if (Keybinds.KEY_u.isPressed()) { EntityPlayer playerSP = Minecraft.getMinecraft().player; IFolder folder = playerSP.getCapability(FolderProvider.FOLDER_CAP, null); folder.add("UUUUU"); NetworkHandler.channel.sendToServer(new ClientToServer(folder)); } else if (Keybinds.KEY_i.isPressed()) { EntityPlayer playerSP = Minecraft.getMinecraft().player; IFolder folder = playerSP.getCapability(FolderProvider.FOLDER_CAP, null); for (String f : folder.getFolders()) { String message = f; playerSP.sendMessage(new TextComponentString(message)); } }else if (Keybinds.KEY_o.isPressed()) { EntityPlayer playerSP = Minecraft.getMinecraft().player; IFolder folder = playerSP.getCapability(FolderProvider.FOLDER_CAP, null); Minecraft.getMinecraft().displayGuiScreen(new DefaultGUI(folder)); } } }  
    • do you guys want to Mack a youtude video  
    • my game is crashing all the time and i dont know why, pls help   here is the crash report:  https://paste.ee/p/72Wz6
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.