Sams Teach Yourself Mod Development for...

50

Transcript of Sams Teach Yourself Mod Development for...

Page 2: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

800 East 96th Street, Indianapolis, Indiana, 46240 USA

Jimmy Koene

24in

Hours

Mod Development for

Minecraft®

Page 3: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

Sams Teach Yourself Mod Development for Minecraft® in 24 Hours Copyright © 2016 by Pearson Education, Inc.

All rights reserved. No part of this book shall be reproduced, stored in a retrieval system, or transmitted by any means, electronic, mechanical, photocopying, recording, or otherwise, without written permission from the publisher. No patent liability is assumed with respect to the use of the information contained herein. Although every precaution has been taken in the preparation of this book, the publisher and author assume no responsibility for errors or omissions. Nor is any liability assumed for damages resulting from the use of the information contained herein.

ISBN-13: 978-0-672-33763-5

ISBN-10: 0-672-33763-0

Library of Congress Control Number: 2015913370

Printed in the United States of America

First Printing November 2015

Trademarks All terms mentioned in this book that are known to be trademarks or service marks have been appropriately capitalized. Sams Publishing cannot attest to the accuracy of this information. Use of a term in this book should not be regarded as affecting the validity of any trademark or service mark.

Minecraft ®/TM & © 2009-2013 Mojang / Notch

Warning and Disclaimer Every effort has been made to make this book as complete and as accurate as possible, but no warranty or fitness is implied. The information provided is on an “as is” basis. The author and the publisher shall have neither liability nor responsibility to any person or entity with respect to any loss or damages arising from the information contained in this book.

Special Sales For information about buying this title in bulk quantities, or for special sales opportunities (which may include electronic versions; custom cover designs; and content particular to your business, training goals, marketing focus, or branding interests), please contact our corporate sales department at [email protected] or (800) 382-3419.

For government sales inquiries, please contact [email protected] .

For questions about sales outside the U.S., please contact [email protected] .

Editor-in-Chief

Greg Wiegand

Executive Editor

Rick Kughen

Development

Editor

Mark Renfrow

Managing Editor

Sandra Schroeder

Project Editor

Mandie Frank

Copy Editor

Barbara Hacha

Indexer

Lisa Stumpf

Proofreader

Paula Lowell

Technical Editor

Boris Minkin

Editorial Assistant

Kristen Watterson

Designer

Mark Shirar

Compositor

codeMantra

Page 4: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

Contents at a Glance

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Part I: Introduction

HOUR 1 Setting Up the Minecraft Development Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 Creating the Basics for Forge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3 Working with Recipes and Other Small Modifications . . . . . . . . . . . . . . . . . . . . . . . 39

Part II: Items

HOUR 4 Making Your First Item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

5 Creating Multiple Items in a Smart Way . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

6 Cooking Up a Food Item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

7 Making Your Own Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

8 Creating Armor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

Part III: Blocks

HOUR 9 Making Your First Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

10 Block States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

11 Making Your Blocks Unique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

12 Creating a Tile Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

Part IV: World Generation

HOUR 13 Generating Ores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

14 Generating Plants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

15 Using MCEdit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

16 Generating Your Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

Part V: Entities

HOUR 17 Learning About Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

18 Creating an Entity Model Using Techne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

Page 5: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

iv Contents at a Glance

19 Coding a Mob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

20 Creating a Throwable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

Part VI: Final Pointers

HOUR 21 Editing Vanilla Minecraft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

22 Structuring Your Mod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333

23 Releasing Your Mod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

24 What’s Next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357

Appendices

A Additional Code Fragments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411

Page 6: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

Table of Contents

Introduction 1

Part I: Introduction

HOUR 1: Setting Up the Minecraft Development Environment 7

Understanding How Minecraft Is Written and What You Will Do with It . . . . . . . . 7

Learning About Forge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

Setting Up the JDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Setting Up Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Setting Up Forge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Troubleshooter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

HOUR 2: Creating the Basics for Forge 23

Understanding the Java in the ExampleMod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

Creating Your Own Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Creating Your Own Class File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Creating the Mod File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

HOUR 3: Working with Recipes and Other Small Modifications 39

Learning About Recipes in Minecraft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

Crafting a Recipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Creating a Shapeless Recipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

Creating a Smelting Recipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

Page 7: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

vi Table of Contents

Using Special ItemStacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Changing the Mob Spawn in a Dungeon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

Changing Chest Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

The Results in the Mod File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Part II: Items

HOUR 4: Making Your First Item 53

Understanding What an Item Is . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Coding a Basic Item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Giving the Item a Texture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

HOUR 5: Creating Multiple Items in a Smart Way 69

Adding Multiple Items Using the Same File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

Adding Metadata to Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

Changing the Constructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

Making Metadata Jsons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

HOUR 6: Cooking Up a Food Item 87

Understanding Food in Minecraft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

Creating a Food Item. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

Adding a Potion Effect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

Page 8: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

Table of Contents vii

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

HOUR 7: Making Your Own Tools 101

Creating a ToolMaterial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

Creating a Pickaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

Creating Special Tools for Harvesting Different Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

Creating the ItemSamPaxel Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

HOUR 8: Creating Armor 119

Creating Your ArmorMaterial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

Creating the Armor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

Customizing Armor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

Part III: Blocks

HOUR 9: Making Your First Block 131

Understanding What a Block Is . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

Creating a Basic Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

Making the Texture Jsons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

Using a Custom Block in a Recipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

Page 9: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

viii Table of Contents

HOUR 10: Block States 143

Coding Block State Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

Making Block State Jsons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

HOUR 11: Making Your Blocks Unique 163

Adding Sided Textures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

Making Half Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

Creating a Plant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

HOUR 12: Creating a Tile Entity 195

Understanding What a Tile Entity Is . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

Creating a Tile Entity Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

Creating a Tile Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

Server Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

Part IV: World Generation

HOUR 13: Generating Ores 217

Using Forge and an EventHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

Creating a SamEventHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

Using OreDictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

Page 10: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

Table of Contents ix

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

HOUR 14: Generating Plants 229

Creating a Custom WorldGen Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

Adding Code to SamEventHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

HOUR 15: Using MCEdit 245

Why Use MCEdit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

Getting MCEdit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

Using MCEdit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

HOUR 16: Generating Your Structure 255

Installing the Schematic Converter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

Using the Schematic Converter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256

Adding Mobs to Your Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

Part V: Entities

HOUR 17: Learning About Entities 269

Understanding What an Entity Is . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

Creating Proxies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

Creating a Basic Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

Page 11: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

x Table of Contents

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

HOUR 18: Creating an Entity Model Using Techne 277

What Are Models? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

Downloading and Installing Techne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

Using Techne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

HOUR 19: Coding a Mob 289

Rendering the Mob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

Making the Mob Spawn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

Making EntitySamMob a Mob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

HOUR 20: Creating a Throwable 307

Registering a Throwable Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

Creating the Entity Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

Using the Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

Rendering the Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318

Page 12: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

Table of Contents xi

Part VI: Final Pointers

HOUR 21: Editing Vanilla Minecraft 319

How to Change Minecraft Indirectly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

Other Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

Giving Your Armor Egg-Throwing Abilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

HOUR 22: Structuring Your Mod 333

Why It Is Important to Structure Your Mod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333

How to Structure Your Mod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347

HOUR 23: Releasing Your Mod 349

Exporting Your Mod with Forge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

Making Your Mod Public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355

HOUR 24: What's Next 357

Using IRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357

Using Open Source Mods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

Learning Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

Q&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

Page 13: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

xii Table of Contents

APPENDICES

APPENDIX A: Additional Code Fragments 365

Configs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

Custom Tree Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366

Automatic Update Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369

Custom Creative Tabs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372

Custom TNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

Changing Mob Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380

Armor Effects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381

Creating a Custom Dimension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383

Custom Biomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401

Custom AI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

Spawning Particles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409

Playing Sounds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410

Index 411

Page 14: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

About the Author

Jimmy Koene maintains one of the world’s most popular Minecraft mod websites

( www.wuppy29.com/minecraft/modding-tutorials/forge-modding/ ). He is one of the only

Minecraft modders who consistently maintains and updates his online tutorials. Also

an expert Java and C++ programmer and Unity developer, he has written an Android

Minecraft app that has been downloaded more than 45,000 times, along with various

other smaller apps. He also maintains several Minecraft mods that cover many aspects of

Minecraft, ranging from slight changes to how food works to mods that completely change

the way you play.

Page 15: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

Dedication

To the Minecraft mod community, who make Minecraft one of the best-selling and amazing games there is. Thanks to the community, I started modding, which led to

the writing of this book.

Acknowledgments

First of all, I want to thank Rick Kughen, who approached me about writing a book about

Minecraft mod development. Before he emailed me with his ideas, I never thought this

would be possible. One of the biggest problems with developing mods for a game such

as Minecraft is that the code you are working with constantly changes. Every update of

Minecraft or Forge, which is the application programming interface (API) used in this book,

may change quite a lot of the code. Thankfully, eBooks can be easily updated, and Rick told

me about the possibility of having an online database where I could frequently add updates

and changes to the book. This made it possible to write this book.

Some other people I should thank are Markus “Notch” Persson, who created Minecraft.

Without his idea, I never would have started programming, and this book would never have

been written. There are many others who helped create Minecraft and the modding com-

munity. Some of those people are Jeb, Dinnerbone, Searge, ProfMobius, R4wk, CodeWarrior,

ZeuX, Risugami, cpw, AbrarSyed, and LexManos. These are the creators of MCP, MCEdit,

Techne, ModLoader, and Forge. All these things are (indirectly) used in this book. Finally,

I would like to thank everybody who worked on the book. This includes the editors, Mark

Renfrow and Rick Kughen, the reviewers, and everybody else who did anything related to

the book. Without all these people, this book would never have been possible. I especially

want to thank LexManos, the creator of Forge. His expertise in this field helped a lot to

improve this book.

Page 16: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

We Want to Hear from You!

As the reader of this book, you are our most important critic and commentator. We value

your opinion and want to know what we’re doing right, what we could do better, what

areas you’d like to see us publish in, and any other words of wisdom you’re willing to pass

our way.

We welcome your comments. You can email or write to let us know what you did or didn’t

like about this book—as well as what we can do to make our books better.

Please note that we cannot help you with technical problems related to the topic of this book.

When you write, please be sure to include this book’s title and author as well as your name

and email address. We will carefully review your comments and share them with the

author and editors who worked on the book.

Email: [email protected]

Mail: Sams Publishing

ATTN: Reader Feedback

800 East 96th Street

Indianapolis, IN 46240 USA

Page 17: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

Reader Services

Visit our website and register this book at informit.com/register for convenient access to any

updates, downloads, or errata that might be available for this book.

Page 18: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

1 Introduction

Introduction

Minecraft is a great game. It’s one of the best-selling PC games, and it’s exceedingly popular.

One of the many reasons why it is so popular is because there are mods. If you picked up this

book, you likely already have an interest in Minecraft, and you might have already played with

some mods. This book teaches you how to create these mods yourself.

Creating mods yourself has two big advantages. First, you can improve the game in the way you

want, shaping the mod to exactly fit your needs and making the game more fun for you to play.

Second, modding is an easy way to get into programming, which is a booming industry, and,

according to many people (including me), modding is a really fun and interesting thing to do.

By the end of this 24-hour book, you will be able to create your own mods and be well on

your way to programming with Java. Each hour covers an important aspect of Minecraft mod

development, including various items, blocks, and entities. You will learn a lot about each of

these subjects by following along with each hour, actively participating in the hands-on Try It

Yourself activities, and completing the Workshops and Exercises at the end of each hour. You

will also gain more information on how to use your development environment, learn things by

yourself, and discover many other topics provided in various Notes and Tips sprinkled through-

out the book.

Who Should Read This Book This book is written for anyone who likes Minecraft and isn’t afraid to learn a thing or two

about programming and Minecraft.

If you expect a full guide on how to start programming, this book isn’t for you. However, if you

want to get into programming or already know how to program, this book will certainly help.

Creating mods for Minecraft is how I got started with programming, and the same goes for

many other mod creators.

It might be helpful to have some familiarity with Java before beginning this book; however,

the Java basics are explained as they are used throughout the book. Therefore, it isn’t neces-

sary to have prerequisite programming knowledge. It is helpful if you have experience play-

ing Minecraft, though, because many terms used in the game are also used in the book.

Additionally, playing Minecraft gives you an insight into how certain aspects of the game work,

Page 19: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

2 Introduction

which makes it easier to understand what you are creating. When you get to the last hour of this

book, it is suggested that you learn Java, but by that time you should already have a reasonable

understanding of it, which makes it easier to learn. Following the last hour is an appendix that

contains even more code, which you will likely need in your own mod.

How This Book Is Organized Learning everything Minecraft has to offer in just 24 hours might seem like a lot to learn—and it

is. This book doesn’t cover the creation of every single thing in Minecraft. Instead, it covers creat-

ing the most commonly used parts, which gives you the knowledge to make the more specific

things. The following breakdown contains the details of what you will learn in each of the hours:

u In Hour 1 , “Setting Up the Minecraft Development Environment,” you set up the environ-

ment in which you will start developing your Minecraft mods. In this hour, you learn

about most of the programs you will be using throughout the book.

u In Hour 2 , “Creating the Basics for Forge,” you start coding things. In this hour, you create

the framework of your mod, which you build on in all the other hours.

u Hour 3 , “Working with Recipes and Other Small Modifications,” is the first hour where you

add custom content to Minecraft in the form of crafting and smelting recipes and more.

u In Hour 4 , “Making Your First Item,” you create your first item. Starting in this hour, you

add the first truly unique and interesting content to your mod. Four hours until you start

adding unique content is a long time, but it is required, because you can’t mod without

the code or a mod class.

u In Hour 5 , “Creating Multiple Items in a Smart Way,” you expand the code you made in

Hour 4 to make sure your mod looks clean and works well with other mods.

u In Hour 6 , “Cooking Up a Food Item,” your goal is to create an item that the player can

eat and that heals the player. This is one of the many custom item types you can create.

u Hour 7 , “Making Your Own Tools,” is another hour containing a custom item type. Here

you learn how to make custom pickaxes, shovels, and completely new tools.

u In Hour 8 , “Creating Armor,” you learn about another custom item type—armor. You

learn how to create armor and then how to customize it.

u In Hour 9 , “Making Your First Block,” similar to Hour 4 , you learn about another impor-

tant aspect of Minecraft. In this hour, you learn about the things the world is made

of—blocks.

u In Hour 10 , “Block States” you learn the same thing you learned in Hour 5 about items,

but for blocks.

Page 20: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

How This Book Is Organized 3

u In Hour 11 , “Making Your Blocks Unique,” you learn various ways to make your blocks

interesting. You learn how to make half blocks, plants, and several other items.

u In Hour 12 , “Creating a Tile Entity,” you learn about one of the most complicated parts of

Minecraft—a tile entity.

u Hour 13 , “Generating Ores,” is the first hour in which you generate something. In this

hour, you learn how to create a class that will do all the world generation for you. It uses

premade code to generate your ores.

u In Hour 14 , “Generating Plants,” you take what you learned in Hour 13 one step further.

You now learn how to create custom code to generate things in the world.

u In Hour 15 , “Using MCEdit,” you learn how to use a program called MCEdit to create a

structure that will be generated in your mod in Hour 16 .

u In Hour 16 , “Generating Your Structure,” you make the structure created in the previous

hour generate in the world of Minecraft.

u In Hour 17 , “Learning About Entities,” you learn what entities are, which kind of entities

there are, and how to create the fundamentals for an entity.

u In Hour 18 , “Creating an Entity Model Using Techne,” you learn how to create a model

for the entity you will create in Hour 19 . This uses a tool called Techne, which is a piece of

modeling software created specifically for Minecraft mods.

u In Hour 19 , “Coding a Mob,” you use the model you created in Hour 18 , combine it with

code from Hour 17 , and then add some more code to create something similar to a zom-

bie, but slightly different.

u In Hour 20 , “Creating a Throwable,” you learn about a different kind of entity that can be

thrown by the player.

u In Hour 21 , “Editing Vanilla Minecraft,” you learn how to edit Minecraft in such a way

that multiple mods can edit the same thing without it breaking the game.

u In Hour 22 , “Structuring Your Mod,” you learn how to clean up your mod a little. At this

point, several files will look quite crowded, which can be harmful to your experience.

After this hour, you should be able to continue coding in an environment that is much

easier to use.

u Hour 23 , “Releasing Your Mod,” is a very important hour. In this hour, you learn how to

use your mod outside of your development environment and how to distribute it to users.

u In Hour 24 , “What’s Next,” you learn how to continue working with Minecraft mod devel-

opment after completing this book. This book is more than just a guide on how to create

what is covered here. The goal is that you learn how to create things yourself.

Page 21: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

4 Introduction

Conventions Used This book uses several conventions to make it easier for you to understand what is being

explained.

Try It Yourself The Try It Yourself activities are one of the most important conventions in this book. The Try It

Yourself activities provide hands-on opportunities to actively experience and engage in the topic

covered in that hour. These hands-on activities provide an opportunity to learn by doing. This is

the best way to learn Minecraft modding.

Notes The Note elements provide extra tidbits of information. These interesting tidbits provide supple-

mental content or expand the information given in the nearby text.

Tips A Tip element provides extra information that can be useful when you are modding. This infor-

mation can range from tips on how to better use a program to certain things you might want to

change in the code. Tips identify handy tricks or expert advice that will help you along the way.

Cautions The Caution element warns you when an action you might take could have dire consequences

later. This cautionary text warns you of potential hazards and provides advance warning of out-

comes you want to avoid.

Code Listings Code listings are another helpful element you’ll find in this book. Code listings provide sample

snippets of code that relate to the topic at hand. You’ll be able to examine the sample code to

get a feel for how your code should be written.

In this book, formal code listings are always surrounded by two lines to show where the code

starts and where it ends. The text surrounding the listing explains where this code should be

placed, if this isn’t clear from the code itself.

When a line of code is too long to fit on one line of text, it is wrapped to the next line. In that

case, the continuation is preceded with a code-continuation arrow (➥).

Page 22: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

Downloading the Code and Resources 5

Downloading the Code and Resources Sometimes your mod will just not work, and no matter how much you look at it, you can’t find

the error. In this case, it might be helpful to copy the code used in this book directly into your

workspace. Examining the sample code and comparing it with the code you have written might

help you locate and correct the error in your code. Additionally, not everyone is good at making

textures, so you might want to obtain the textures used in this book. Both of these things can be

accessed by registering your book:

1. Go to www.informit.com/title/9780672337635 .

2. Click Register Your Product and log in or create a new account.

3. Enter this ISBN: 9780672337635. This is the ISBN of the print book and must be used to

register every edition.

4. Click the Access Bonus Content link in the Registered Products section of your account

page, which will take you to the page where your downloadable content is available.

Furthermore, as mentioned in the Acknowledgments, the code used to make mods for Minecraft

can change quite often. To make sure this book will remain useful in the future, there are online

updates and errata, which can be found at www.informit.com/title/9780672337635 on the

Updates tab.

Page 23: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

This page intentionally left blank

Page 24: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

39 HOUR 3: Working with Recipes and Other Small Modifications

HOUR 3 Working with Recipes and Other

Small Modifications

What You’ll Learn in This Hour:

u The different kinds of recipes in Minecraft

u Creating all those recipes

u Changing dungeon spawns

u Changing chests

This is the first hour where you actually write your own code to get started for your own mod.

This hour contains some of the most basic Minecraft modifications, which include recipes ,

dungeon possibilities, and generated chests . Thanks to Forge you can add every kind of recipe

in Minecraft. You can also change the mobs that can be spawned in a dungeon. This can be

used to add your own mob, but you can also create, for example, the possibility of a creeper

dungeon. Finally, Forge also enables you to change the contents of any vanilla generated chest.

Vanilla is the base of Minecraft without any mods installed.

Learning About Recipes in Minecraft In Minecraft there are multiple kinds of recipes. There is a difference between smelting iron ore

and crafting an iron pickaxe with it. This should be quite logical, because you do both in a differ-

ent block. However, a difference also exists between crafting something like planks and a pickaxe.

There are three types of crafting recipes:

u Crafting recipes are recipes where you need certain items or blocks in a specified pattern.

Another name for these is standard or shaped recipes. An example of a recipe like this is

an iron pickaxe.

u Shapeless recipes are recipes without a defined shape. They also require certain items and

blocks, but the pattern doesn’t matter. An example of a shapeless recipe is a flint and steel.

u Smelting recipes are all used in a furnace. Smelting recipes don’t have a shape and never

have more than one item or block as an input.

Page 25: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

40 HOUR 3: Working with Recipes and Other Small Modifications

For all the recipe types, you can return only a single item or block, but you can return several of

the same item or block.

Crafting a Recipe Now you will finally start modding the game. Recipes may not be that big of a change, but sev-

eral combined can change the way the game is played, especially in combination with custom

Items , which are explained in Hour 4 , “Making Your First Item.”

Recipe code has to be added in the mod file. Listing 3.1 is the mod file from Hour 2 without the

System.out.println lines.

LISTING 3.1 Clean Mod File

package com.wuppy.samsmod;

import net.minecraft.init.Blocks; import net.minecraftforge.mods.fml.common.Mod; import net.minecraftforge.mods.fml.common.Mod.EventHandler; import net.minecraftforge.mods.fml.common.event.FMLInitializationEvent;

@Mod (modid = SamsMod. MODID , version = SamsMod. VERSION )

public class SamsMod {

public static final String MODID = "wuppy29_samsmod" ;

public static final String VERSION = "1.0" ;

@EventHandler

public void init(FMLInitializationEvent event) {

}

}

The code for recipes can look quite complicated to start with and is really hard to understand

without starting off with a code example. In the code that follows, you can see an example of a

recipe. When you add this code, make sure you import the new files.

GameRegistry. addRecipe ( new ItemStack(Items. apple ), "XXX" ,

"XXX" ,

"XXX" ,

'X' , Blocks. leaves

);

Page 26: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

Crafting a Recipe 41

This recipe will look like Figure 3.1 .

FIGURE 3.1 The Apple recipe in game.

CAUTION

Code Location This code, as well as any of the other code in this hour, has to go into the init method or it will not work; it will be full of errors.

Using GameRegistry The first part of this line is GameRegistry . GameRegistry is a file you will frequently use when

coding Minecraft Forge mods. This file contains the registry of every recipe, and also items and

blocks.

Because there are so many things you can do with this file, it has many methods that all do dif-

ferent things. To create a basic shaped recipe, you need the addRecipe method. This method

takes two parameters. The first parameter is an ItemStack . An ItemStack is another class you

will use frequently. It’s used to handle items or blocks in stacks. This recipe shows the most basic

type of ItemStack , but you can add two more numbers as parameters. What those do will be

shown in a different recipe. When you just use an Item or Block as parameter, it will create an

ItemStack with that object with a stack size of 1 and a metadata of 0. Metadata and how to

code it are explained in Hour 5 , but examples of metadata are dyes and wool blocks.

Page 27: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

42 HOUR 3: Working with Recipes and Other Small Modifications

The first parameter is the Item or Block the recipe will return. In this case it will return a single

apple.

The second parameter in the addRecipe mode is a weird one. If you take a look at the param-

eter in the GameRegistry class, it’s written as follows:

Object... params

The ... means that it’s a parameter that can take any amount of values you want. This param-

eter can be interpreted as some sort of list. Everything you put after the first parameter of the

addRecipe method will be added in this list and used in the recipe.

The Shape of the Recipes The way these Recipes are done in Minecraft is by typing the shape of the crafting table in the

recipe using three strings. Each of the three strings contains three spaces to put an Item or a

Block. Another example of the crafting table space:

"ABC",

"DEF",

"GHI",

Each letter represents one of the usable crafting areas in the crafting grid in the crafting table If

you want one of the spots to be empty, you replace one of the lines with a space.

Up to this point in the code, it’s just letters. Somehow those letters have to be changed into

Items and Blocks. That is done just below the crafting grid shape. After the last row that ends

with a comma, the letter X is surrounded by apostrophes, which turns it into a character. After

this character you need another comma, followed by the Block that you want it to represent,

which are leaves in this example. The recipe created by the preceding code would require each

area in the crafting grid to be filled with a leaf and it will then return an apple.

Alternative Shapes Sometimes you don’t require a three-by-three space to create a crafting recipe. In some cases you

just need a two-by-two area. This is done using the following code.

"AB",

"CD",

With this code, the two-by-two shape can be placed anywhere in the crafting table. Another

example of a differently shaped recipe is bread, which would look something like this:

"AAA",

In here the letter is the same each time, because bread is crafted using three wheat, but you can

use different letters.

Page 28: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

Crafting a Recipe 43

If you have more than a single Item or Block that is used in the shape, you have to add a

comma behind the last Item or Block, write another pair of apostrophes, and follow that up by

the other Item or Block.

An example of using a smaller grid, empty spaces, and using multiple components is shown next:

GameRegistry. addRecipe ( new ItemStack(Items. arrow ), "YZ" ,

"X " ,

'X' , Items. flint , 'Y' , Items. stick , 'Z' , Blocks. leaves

);

This will allow you to craft an arrow in your player inventory using leaves. Figure 3.2 shows the

crafting of the recipe.

FIGURE 3.2 A smaller recipe in the player’s inventory.

Another thing you may want to have in your recipes is that the returned ItemStack has a size

of more than 1. Two other things that may be interesting for a recipe are metadata for the used

and the resulting Item or Block. You can see all of these things in a single recipe, as follows:

GameRegistry. addRecipe ( new ItemStack(Items. dye , 2, 1), "XY" ,

'X' , Items. redstone , 'Y' , new ItemStack(Items. dye , 1, 1) );

Each of the ItemStacks used in this recipe have three parameters now. The first is still an Item

or Block. The second is the stack size. You can return a stack size of more than one, but you can’t

Page 29: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

44 HOUR 3: Working with Recipes and Other Small Modifications

use a higher stack size in a used item. The third parameter is the damage or metadata of the item.

Metadata starts counting at 0 and goes up to 15. This recipe will combine one redstone and one

red dye to make two red dyes. Red dye is the second metadata for dyes. Therefore the damage is 1.

This recipe may seem a little illogical, because this recipe will work only when the dye is on the

right. For recipes like this, generally a Shapeless Recipe is used.

Creating a Shapeless Recipe Shapeless recipes work similar to standard recipes. They are also set in GameRegistry and take

the same parameters. The following code is the dye recipe redone in a shapeless recipe.

GameRegistry. addShapelessRecipe ( new ItemStack(Items. dye , 2, 1), Items. redstone , new ItemStack(Items. dye , 1, 1) );

In a shapeless recipe there is no need for letters or a crafting grid. You place up to nine Item,

Block, or ItemStack objects in the Object array separated by commas, and the recipe will

work. Except for that, it works exactly the same.

In game, this recipe can be crafted in the Player’s inventory and looks like Figure 3.3 .

FIGURE 3.3 A shapeless recipe.

Creating a Smelting Recipe The final type of Recipe in Minecraft is a smelting recipe. A smelting recipe has only a single

input and a single output slot. The input can, again, have a stack size of only one, and the output

Page 30: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

45Using Special ItemStacks

can be more than one. Another thing to note is that smelting a recipe grants experience. The

amount has to be set for the smelting recipe as well. Following is an example of a smelting recipe:

GameRegistry. addSmelting (Blocks. stone , new ItemStack(Blocks. stonebrick ), 0.1F);

The first parameter can be an Item, Block, or ItemStack, but always with size 1. The second

parameter has to be an ItemStack, and you can do everything with it you want here. The final

parameter is a float value for the experience points you get from smelting this. A float in Java is

basically a number with decimals. The vanilla smelting recipes have an experience return between

0.1F and 1F, where 0.1F is the recipe for cobblestone into stone and 1F is for smelting diamond ores.

Figure 3.4 shows this recipe in the game.

FIGURE 3.4 A smelting recipe.

Using Special ItemStacks It is possible to use a special ItemStack in a recipe. To do that, you first have to create an

ItemStack object and then use that in the recipe. Following is an example that creates a stone

sword with sharpness 1 from a stone sword and a flint. This code uses a new file, so be sure to

import it.

ItemStack enchantedSwordItemStack = new ItemStack(Items. stone_sword ); enchantedSwordItemStack.addEnchantment(Enchantment. sharpness , 1);

GameRegistry. addShapelessRecipe (enchantedSwordItemStack,

Items. flint , Items. stone_sword

);

Page 31: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

46 HOUR 3: Working with Recipes and Other Small Modifications

This code first creates an object of a normal stone sword. It then adds the sharpness enchant-

ment of level 1 to it. Next, a shapeless recipe is added with the enchanted stone sword as the

resulting item. The sword is crafted using a flint and a normal stone sword.

Figure 3.5 displays this recipe in game.

FIGURE 3.5 An enchantment recipe.

Creating a Knockback Sword

Try to create a sword with knockback using the code displayed previously, follow these three steps.

1. Create an ItemStack of any kind of sword.

2. Add the knockback enchantment to it.

3. Create a recipe using an unenchanted version of the sword along with gunpowder, with the returned item being the enchanted sword.

The code answer:

ItemStack knockbackItemStack = new ItemStack(Items. stone_sword ); knockbackItemStack.addEnchantment(Enchantment. knockback , 1);

GameRegistry. addShapelessRecipe (knockbackItemStack,

Items. gunpowder , Items. stone_sword

);

TRY IT YOURSELF

Page 32: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

Changing the Mob Spawn in a Dungeon 47

Changing the Mob Spawn in a Dungeon If you don’t know what a dungeon is, you should read the following web page: http://minecraft.

gamepedia.com/Dungeon .

Forge is a very good API. It lets you change many small things without changing any of the code

directly, which results in mods not working together.

Removing a Mob Forge allows you to change the mob spawn in a dungeon, for example, using a simple method

in your mod file. First, a method that removes spider dungeons will look as follows.

Again, don’t forget to import the new files.

DungeonHooks. removeDungeonMob ( "Spider" );

This method removes the spider from the dungeon. It is a method in the DungeonHooks file that

will select the mob that will be spawned in the dungeon. The removeDungeonMob takes a single

String parameter that has to be the name of the mob in the code. If you want to know the

exact names of all the mobs in Minecraft, go to the EntityList file in the net.minecraft.entity

package of the ForgeSrc library.

Make sure you spell “Spider” correctly, or it won’t work. The standard mobs spawning in a dun-

geon can be seen in the DungeonHooks file. You can also use this method to remove the spawn

of a mob from a different mod, provided you have the name of it.

Adding a Mob You can also add mobs to the dungeons using the next method:

DungeonHooks. addDungeonMob ( "Creeper" , 100);

The first parameter is just like the removeDungeonMob, the code name of the mob. The second

parameter is the spawn chance. As documented in the DungeonHooks file, spiders and skeletons

have a 100 chance of spawning. Zombies have a chance of 200. Modifications such as this one

can be found by browsing the Forge code.

Adding a Mob

Add a different mob using the preceding method following these steps:

1. Find the mob name in the EntityList class, where all of the names are listed.

2. Add a method like the preceding one in your mod file with a 50 spawn chance.

TRY IT YOURSELF

Page 33: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

48 HOUR 3: Working with Recipes and Other Small Modifications

Changing Chest Items In Forge is another useful file that can be used to change the contents of basically any vanilla-

generated chest.

Removing an Item Following is an example of how to remove an Item from a chest:

ChestGenHooks. removeItem (ChestGenHooks. DUNGEON_CHEST , new ItemStack(Items. saddle ));

removeItem is a method in ChestGenHooks, which takes two parameters. The first parameter

is a String. This string specifies which chest it should remove an item from. You can manually

type this, but it’s suggested to use one of the variables in the ChestGenHooks file.

The second parameter is an ItemStack of the item that has to be removed from the chest.

Adding an ItemJust like with the dungeon mobs, you can also add new things to the chest here. The following

code shows how to do that:

ChestGenHooks. addItem (ChestGenHooks. DUNGEON_CHEST , new ➥WeightedRandomChestContent( new ItemStack(Blocks. cobblestone ), 25, 50, 10));

This method requires two parameters. Like with removeItem, the first parameter is the string

that specifies the chest. The second parameter is a WeightedRandomChestContent. This is

another file that requires four parameters.

The first parameter in the WeightedRandomChestContent is an ItemStack containing the

Item or Block that should be generated. The second parameter is the minimum stack size in

which it will generate. The third parameter is the maximum stack size. The final parameter is

the chance of it being chosen. Gunpowder has a chance of 10 and a golden apple of 1.

The Results in the Mod File After you have done all this, the mod file should look something like the following:

package com.wuppy.samsmod;

import net.minecraft.enchantment.Enchantment; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.util.WeightedRandomChestContent; import net.minecraftforge.common.ChestGenHooks;

Page 34: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

The Results in the Mod File 49

import net.minecraftforge.common.DungeonHooks; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.registry.GameRegistry;

@Mod (modid = SamsMod. MODID , version = SamsMod. VERSION )

public class SamsMod {

public static final String MODID = "wuppy29_samsmod" ;

public static final String VERSION = "1.0" ;

@EventHandler

public void init(FMLInitializationEvent event) {

// crafting recipes

GameRegistry. addRecipe ( new ItemStack(Items. apple ), "XXX" ,

"XXX" ,

"XXX" ,

'X' , Blocks. leaves );

GameRegistry. addRecipe ( new ItemStack(Items. arrow ), "YZ" ,

"X " ,

'X' , Items. flint , 'Y' , Items. stick , 'Z' , Blocks. leaves );

GameRegistry. addRecipe ( new ItemStack(Items. dye , 2, 1), "XY" ,

'X' , Items. redstone , 'Y' , new ItemStack(Items. dye , 1, 1));

// shapeless recipes

GameRegistry. addShapelessRecipe ( new ItemStack(Items. dye , 2, 1), ➥Items. redstone , new ItemStack(Items. dye , 1, 1));

// special recipes

ItemStack enchantedSwordItemStack = new ItemStack(Items. stone_sword ); enchantedSwordItemStack.addEnchantment(Enchantment. sharpness , 1);

GameRegistry. addShapelessRecipe (enchantedSwordItemStack, Items. flint , ➥Items. stone_sword );

ItemStack knockbackItemStack = new ItemStack(Items. stone_sword ); knockbackItemStack.addEnchantment(Enchantment. knockback , 1);

GameRegistry. addShapelessRecipe (knockbackItemStack, Items. gunpowder , ➥Items. stone_sword );

Page 35: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

50 HOUR 3: Working with Recipes and Other Small Modifications

// smelting

GameRegistry. addSmelting (Blocks. stone , new ItemStack(Blocks. stonebrick ), ➥0.1F);

// dungeon changes

DungeonHooks. removeDungeonMob ( "Spider" );

DungeonHooks. addDungeonMob ( "Creeper" , 100);

ChestGenHooks. removeItem (ChestGenHooks. DUNGEON_CHEST , new ➥ItemStack(Items. saddle ));

ChestGenHooks. addItem (ChestGenHooks. DUNGEON_CHEST , new ➥WeightedRandomChestContent( new ItemStack(Blocks. cobblestone ), 25, ➥50, 10));

}

}

This code adds several standard recipes, a smelting recipe, and some shapeless recipes. It also

changes up the dungeons a little bit.

Except for this, the code is grouped up a little, and there are a few comments that quickly tell the

reader what it does. It’s suggested to add this to your own file as well.

Summary In this hour you learned everything there is to know about recipes. You know what kind of reci-

pes are in Minecraft, which type is used for each recipe in vanilla, and you also started changing

the game by adding some unique recipes to the game. After this you learned how to edit chests

and dungeons without changing any of the vanilla files.

Q&A Q. Is there a maximum number of recipes you can add?

A. There is no reachable limit on the number of recipes; you can add as many as you want although it is limited by computer power.

Q. Is it possible to create recipes that take an item with a stack size of more than one?

A. Unless you create a custom crafting table, this is impossible.

Q. Are there other files like this in Forge?

A. There are many files in Forge that change simple small things. Look around the code a bit if you are looking for something specific. These were just commonly used once.

Page 36: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

51Exercises

Workshop Finally you have created something that changes the game. Answer the following questions and do the exercises to make sure you understand it.

Quiz 1. What is the code name of an Ocelot?

2. Does the following smelting recipe give the player a lot of XP?

GameRegistry. addSmelting (Items. gold_nugget , new ItemStack(Blocks. obsidian ), 3F);

3. If you want to create a flint and steel recipe that uses a flint and an iron ingot, which kind of recipe is the best choice?

Answers 1. The name is “Ozelot.”

2. Yes, three times as much as smelting diamond ore.

3. The best choice is a shapeless recipe.

Exercises Try to create some custom recipes and change up the dungeon spawns a little:

1. Create a recipe for grass using a dirt block and a vine block.

2. Create a smelting recipe for flint that uses a gravel block.

3. Add Enderman to the possible mob spawns in a dungeon.

4. Add diamond blocks to the possible items in a dungeon.

Page 37: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

This page intentionally left blank

Page 38: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

Symbols

// (double backslash), 29

A

adding

AI to mobs, 299 - 300

base values to mobs, 301

code to SamEventHandler,

237 - 241

cubes, Techne, 281 - 282

drops to mobs, 301 - 303

items to chests, 48

metadata to items, 76

mob eggs, 296 - 297

mobs, 47

multiple items using the

same file, 69 - 74

natural spawns, mobs,

297 - 298

potion effects, 94 - 96

proxies to mods, 270 - 271

random start metadata, gen-

erating plants, 231 - 233

right-clicking to blocks,

206 - 210

seeds, 180 - 186

sided textures, 163 - 164

texture

to items, 61 - 66

to plants, 177 - 180

tile entities to blocks, 199 - 201

world generation code,

SamEventHandler, 218 - 224

zombie texture, 281 - 282

addSpawn, 297 - 298

addToolMaterial, 101

adfoc.us, modders, 15

AI, 403

adding to mobs, 299 - 300

attacking by night, 405

fleeing when hurt, 403

alternative shapes, Recipes,

42 - 44

Index

Page 39: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

412 amount of times tool can be used

amount of times tool can be

used, 102

annotations, 26

API (application programming

interface), 7

Forge, 8 - 9

Apple Recipe, 41

.application file, Techne, 278

application programming

interface. See API (application

programming interface)

armor

creating, ArmorMaterial,

119 - 120

customizing, 126 - 128

effects, 381

egg-throwing abilities, 326 - 329

ItemSamArmor class,

creating, 121 - 123

mod file code, 120 - 121

texture, 122

worn armor texture, creating,

124 - 126

ArmorMaterial, creating, 119 - 120

attacking by night, 405

attacking villagers, 300 - 301

autocompletion, Eclipse, 205

WorldGenSamPlant, 238

automatic update checking, 369

axe, 109

B

base values, adding to mobs, 301

basic entities, creating, 272 - 273

basic items, coding, 54 - 57

berries

creating, 88 - 90

texture, 90

berry json, 90

biomes, 383

bipedEars, 277

blast resistance, blocks, 134

block bounds, metadata,

167 - 172

block drops, editing, 325

block state blocks

coding, 143 - 144

json, 157 - 159

block states, 143

BlockType class, creating,

144 - 149

creating, 173 - 174

json, 157 - 159 , 179

samPlant.json, 179

BlockBush, 174

BlockPos.down(), 231

blocks, 53 - 54

adding tile entities, 199 - 201

blast resistance, 134

BlockSamStone class,

creating, 132 - 134

custom blocks, using in

recipes, 140

customizing, 134 - 136

defined, 131 - 132

different shapes,

creating, 166

half blocks, 165 - 171

BlockSamStone, 168 - 171

hardness of, 134

harvest level, 135

Item version, 148

localizations, 136 , 157

mod file code, 132

plants. See plants

registering, 157

right-clicking, adding,

206 - 210

sided textures, adding,

163 - 164

step sound, 134

texture, json, 137 - 140

tile entity blocks, creating,

196 - 199

unbreakable blocks,

creating, 135

BlockSamPlant, 171 - 173 , 186

completed code, 188 - 191

BlockSamStone class, 132 ,

135 - 136 , 145 - 147

creating, 132 - 134

finishing, 152 - 156

OreType, 149 - 150

BlockSamTE class, 196 ,

200 - 201

right-clicking, 207 - 209

blockstate json, 198

BlockType class, creating,

144 - 149

body parts, moving,

292 - 293

bonemeal, 175

boolean, 76

boot texture, 122

brackets, 26

byID, 149

Page 40: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

cube properties, editing 413

C

canUseBonemeal, 175

changing

constructors, 76 - 77

entities, without replacing,

320 - 324

mob behavior, 380

proxies, 335

channels, joining (Internet Relay

Chat), 359 - 360

chestplate texture, 122

chests, items

adding, 48

removing, 48

ChunkProviderExample class,

class files, creating, 32 - 34

classes

BlockSamStone class. See

BlockSamStone class

BlockSamTE class, 196

BlockType class, creating,

144 - 149

ChunkProviderExample class,

385

Entity class, creating,

308 - 310

EntityAI classes, 299

EntityCaveSpiderCustom

class, 381

EntityItem, 321

EntitySamMob class,

creating, 273 - 274

ExampleTab, 372

fields, 27 - 28

ItemSamArmor class, 121 - 123

ItemSamAxe class, 106

ItemSamHoe Class, 106 - 107

ItemSamPaxel class,

111 - 115

ItemSamPickaxe class,

creating, 103 - 105

ItemSamShovel class, 107

ItemSamSword class, 108

methods, 28 - 29

mobs, 289

ModelSamMob class,

289 - 292

OreDictionary, 224

Recipes, 225 - 226

registering, 225

public class, 26 - 27

Render class, coding,

294 - 295

RenderingRegistry class, 295

RenderSamMob class,

294 , 314

SamsMod Class

code, 336 - 343

ModBlocks, 343 - 344

TileEntity class, 200 , 204

TileEntitySam class, 202

UpdateChecker class, 369

WorldGen class, checking and

placing, 231 - 237

WorldProviderExample class,

383

clean mod file, 40

cleaning

files, 259 - 260

mod class, 335 - 344

packages, 333 - 335

ClientProxy, 271 - 272 , 314 - 315

closed minecraft packages, 20

code

adding to SamEventHandler,

237 - 241

copying, 361

for open source mods,

360 - 361

code formatting, Eclipse,

232 - 237

coding

basic items, 54 - 57

block state blocks, 143 - 144

ItemSamStone, 150 - 152

Render class, 294 - 295

CommonProxy, 271 , 314

configs, 365

console, printing to, 36

constructors

changing, 76 - 77

ItemBerry class, 89

ItemSamThrow, 312

mod class, fixing, 81

names, fixing, 77 - 78

recipes, fixing, 81 - 84

variants, 78 - 81

copying code, 361

crafting, 44 - 45

Recipes, 39 - 41

GameRegistry, 41 - 42

Shapeless Recipes, 44

shapes, 42 - 44

CreativeTabs, 372

crops, 174 - 176

cube properties, editing, 280 - 281

Page 41: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

414 cubes, adding/removing (Techne)

cubes, adding/removing (Techne),

281 - 282

custom AI, 403

custom biomes, 401

custom blocks, using in recipes,

140

custom creative tabs, 372

custom TNT, 373

custom tree generation, 366

customizing

armor, 126 - 128

blocks, 134 - 136

plants, 186 - 192

D

damage tools will do, 102

data, sending to tile entities,

210 - 213

dimensions, 383

ChunkProviderExample class,

385

WorldProviderExample class,

383

displaying

items within the game, 123

line numbers, 91 - 94

downloading

JDK (Java Development Kit), 9

MCEdit, 245 - 246

Schematic Converter, 255

Techne, 278

dropRareDrop, 301

drops

adding to mobs, 301 - 303

randomizing, 321

dungeons, 47

creating, 248

mob spawn, removing, 47

mobs, adding, 47

E

Eclipse, 8

autocompletion, 205

code formatting, 232 - 237

Project Explorer, 29 - 30

setting up, 14

editCounter, 209

editing

block drops, 325

cube properties, Techne,

280 - 281

Vanilla Minecraft

armor egg-throwing

abilities, 326 - 329

changing entities without

replacing, 320 - 324

editing block drops, 325

events, 325

removing entities, 319 - 320

egg-throwing abilities, adding to

armor, 326 - 329

empty item files, 57

empty ItemBerry file, 88

enchantability, 102

ArmorMaterial, 120

entities, 54

changing without replacing,

320 - 324

creating, EntitySamMob

class, 273 - 274

creating basic, 272 - 273

defined, 269 - 270

proxies, 270

adding to mods, 270 - 271

ClientProxy, 271 - 272

CommonProxy, 271

removing, 319 - 320

rendering throwables, 314 - 315

spawning manually, 264 - 265

throwables. See throwables

making the item throw the

entity, 313

Entity class, creating, 308 - 310

EntityAI classes, 299

EntityAIAttackOnCollideNight, 404

EntityAIFleeOnHurt, 403

EntityCaveSpiderCustom class, 381

EntityItem, 321

EntitySamMob class, 272 ,

298 - 299

attacking villagers, 300 - 301

creating, 273 - 274

finished, 302 - 303

EntitySamThrowable, 308 - 309

Extending Entity Throwable,

308 - 311

EntityThrowable, 309

EventHandler, 325

creating, SamEventHandler,

217 - 218

Forge, 217

SamEventHandler

adding world generation

code, 218 - 224

code, 222 - 224

Page 42: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

installing 415

events, editing, 325

ExampleMod

import, 25

Java, 23 - 24

@Mod, 25 - 27

packages, 24 - 25

ExampleTab, 372

explosions, creating, 310 - 311

exporting

models, Techne, 283 - 286

mods, with Forge, 349 - 351

structures, MCEdit, 251

F

fields

classes, 27 - 28

static fields, 27

files

cleaning, 259 - 260

empty item files, 57

.jar files, 349 - 350

mcmod.info file, 350 - 351

mod files, 48 - 50

creating, 35 - 36

final, 27

finding, open source mods, 360

fixing

item names, 59 - 61

mod class, constructors, 81

names, constructors, 77 - 78

recipes, constructors,

81 - 84

fleeing when hurt, 403

folders, packages, 335

food, 87 - 88

berries, texture, 90

creating

ItemBerry class, 88 - 90

mod file code, 88

foodLevel, 87

foodSaturationLevel, 87

Forge, 8 - 9

EventHandler, 217

mods, exporting, 349 - 351

proxies, 270

setting up, 14 - 17

on Mac, 15

formatting code, Eclipse, 232 - 237

G

GameRegistry, 41 - 42

generate method, 219 , 230

generateSurface, 221

generating ores, 220 - 221

generation files, Schematic

Converter, 258 - 261

getBlockState, 204

getCurrentArmor, 327

getDescriptionPacket, 211

getDropItem, 301

getDrops, 187

getID, 147

getItemDropped method, 152

getName, 144

getPlant, 183

getTileEntity, 207

getUnlocalizedName, 77 - 78

GitHub repositor, 352 - 353

greyKey, 71

greyKey Json, 71

metadata, 85

grow, 176

growing plants, 176 - 177

H

half blocks, BlockSamStone,

168 - 171

half slabs, 166

hardness of, blocks, 134

harvest level, 102

blocks, 135

helmet texture, 122

helmets, json, 122

HexChat, 357 - 359

hoe, 109

ItemSamHoe Class, 106 - 107

I

IDEA, 8

IDEs (Integrated Development

Environments), 8

import, ExampleMod, 25

importing worlds, MCEdit,

249 - 250

installing

IRC (Internet Relay Chat),

357 - 360

MCEdit, 247

Schematic Converter, 255 - 256

Techne, 278

Page 43: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

416 Integrated Development Environments (IDEs)

Integrated Development

Environments (IDEs), 8

interface, Techne, 279

Internet Relay Chat. See IRC

(Internet Relay Chat)

IPlantable, 183

IRC (Internet Relay Chat), 357

installing, 357 - 360

joining channels, 359 - 360

IStringSerializable, 144

item files, creating, 57 - 59

Item version, blocks, 148

ItemAxe, 113

ItemBerry class

with constructors, 89

creating, 88 - 90

ItemBlock, 150

ItemKey, 58 - 59

metadata, 79 - 81

with name variable, 66

ItemKey file, 69 - 70

multiple items, 70

ItemPickaxe, 113

items

adding

to chests, 48

metadata to, 76

basic items, coding, 54 - 57

creating, 73 - 74

defined, 53

displaying, within the game,

123

food. See food

multiple items, adding using

the same file, 69 - 74

names, fixing, 59 - 61

naming, 65

removing, from chests, 48

texture, 61 - 66

ItemSamArmor class

completed, 127 - 128

creating, 121 - 123

ItemSamAxe class, 105 - 106

ItemSamGeneric, 74

ItemSamHoe Class, 105 - 107

ItemSamPaxel class

creating, 111 - 115

super, 112 - 113

ItemSamPickaxe class, creating,

103 - 105

ItemSamPickaxe constructor,

103

ItemSamPlant, 180 - 181

ItemSamSeed, 180 , 184 - 186

ItemSamShovel class, 105 - 107

ItemSamStone, coding, 150 - 152

ItemSamStoneBlock, 150 - 152

ItemSamSword clas, 105 , 108

ItemSamThrow, 311

constructors, 312

texture, 312

ItemSpade, 105

ItemStacks, 45 - 46 , 313

IWorldGenerator, 218 - 219

J

.jar files, 349 - 350

Java, 7 , 362

ExampleMod, 23 - 24

Java Runtime Environment (JRE), 8

JDK (Java Development Kit), 8

downloading, 9

setting up

on Linux, 14

on Mac, 14

on Windows, 9 - 13

joining channels, IRC (Internet

Relay Chat), 359 - 360

JRE (Java Runtime Environment), 8

json

berry json, 90

block states, 157 - 159 , 179

blockstate json, 198

greyKey Json, 71

helmets, 122

metadata, 84 - 85

pickaxe, 103 - 104

redKey json, 72 - 73

samTE json, 198 - 199

slabs, 166 - 167

texture, blocks, 137 - 140

tntExample Block json, 375

tntExample blockstate json,

375

K

knockback swords, creating, 46

L

.lang, 61

leggings texture, 122

level.dat file, 249

Page 44: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

listings 417

line numbers, displaying, 91 - 94

Linux, JDK (Java Development

Kit), setting up, 14

listings

Age Metadata Methods,

173 - 174

All the New Code in postInit,

104 - 106

Armor Code, 120

Basic BlockSamTE Class, 196

basic item Json, 63

Basics in BlockSamPlant,

171 - 173

berry json, 90

Block Json with Sided

Textures, 164

Block Model json, 138

Block Model samPlant_

stage0.json, 179

Block Model samPlant_

stage1.json, 179

Block Model samPlant_

stage2.json, 179

BlockSameStone with Basic

Code, 133

BlockSameStone with the

BlockType So Far, 145 - 147

BlockSamStone as Half

Blocks, 168 - 171

BlockSamStone Finished,

153 - 156

BlockSamStone with the New

Methods, 135 - 136

BlockSamTE Progress,

196 - 197

blockstate samPlant.json, 179

Blockstates json, 139

Class Update Checker, 369

Clean mod file, 40

Cleaned-Up

WorldGenSamDungeon,

260 - 261

ClientProxy with register

Rendering, 272

ClientProxySam with the New

Method, 314 - 315

ClientProxySam with the

RenderingRegistry,

295 - 296

Common Error Related to

Internet Problems, 19

CommonProxySam with

the registerItemRenders

Method, 314

CommonProxySam with the

registerRendering Method,

271

Complete Entity Spawn Code,

265

Completed BlockSamPlant,

188 - 191

Completed BlockSamTE,

200 - 201

Completed ItemSamArmor,

127 - 128

Config Example, 365

Constructor and Variables in

BlockType, 145

Custom Creative Tab Class,

372

Custom Mod Files, 35 - 36

Custom Tree Generation

Class, 344

Default Block Json, 164

Default mcmod.info, 350

Displays BiomeGenEample,

402

Empty EntitySamMob Class,

273

Empty Item Files, 57

Empty ItemBerry File, 88

EntityAIAttackOnCollideNight,

405

EntityAIFleeOnHurt, 403

EntityCaveSpiderCustom

class, 381

EntitySamMob AI Code, 299

EntitySamMob Extending

EntityMob, 299

EntitySamMob Finished,

302 - 303

EntitySamMob with the

Required Methods, 274

EntitySamThrowable

Extending Entity Throwable,

308 - 309

EntitySamThrowable

Extending EntityThrowable,

308 - 309

EntitySamThrowable Finished,

310 - 311

Example of a Custom TNT

Block, 373

ExampleMod in the Setup,

17 , 23 - 24

Exported Model, 284 - 286

final ItemKey code, 58 - 59

finished ItemBerry File,

95 - 96

Finished ItemSamSeed,

184 - 186

Finished ModelSamMob,

290 - 292

Finished SamEventHandler,

222 - 224 , 261 - 264

Page 45: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

418 listings

Finished TileEntitySam,

212 - 213

Finished WorldGenSamPlant,

231 - 233

Full Egg Throwing Code, 329

Generated Code, 258 - 259

Grey and Red Key Code, 72

greyKey Json, 71

Half Slab Json, 166

Initial ClientProxySam, 272

Initial CommonProxySam, 271

Initial EntitySamThrowable, 308

Initial ItemSamThrow, 311

Initial RenderSamMob Class,

294

Initial SamEventHandler, 218

Initial TileEntitySam Class,

202

Initial WorldGenSamPlant

Class, 229

Item Model json, 139

Item Model samPlant.json,

178

ItemBerry with constructors,

89

ItemKey file, 69 - 70

ItemKey file for Multiple

Items, 70

ItemKey with Metadata,

79 - 81

ItemKey with the Name

Variable, 66

ItemSamAxe Class, 106

ItemSamGeneric, 74

ItemSamHoe Class, 106 - 107

ItemSamPickaxe Constructor,

103

ItemSamPlant, 181

ItemSamShovel class, 107

ItemSamStoneBlock Finished,

151 - 152

ItemSamStoneBlock with the

Constructor, 150 - 151

ItemSamSword clas, 108

ItemSamThrow with the

Constructor, 312

Metadata Grey Key Json, 85

Mob Spawner Code, 267

Mod Class Now, 82 - 84

Mod File with All Tool Code

Outside of the preInit

Method, 104

mod file with preInit method,

54 - 56

ModBlocks for SamsMod,

343 - 344

onArmorTick for Block

Changes,

pickaxe json, 103 - 104

postInit method, 64 - 65

preInit Armor Code, 121

RenderExampleTNTPrimed,

377

RenderSamMob Extending

RenderLiving, 294

Right-Clicking in BlockSamTE,

207 - 209

SamEventHandler with

LivingDropsEvent,

322 - 324

SamEventHandler with the

IWorldGenerator, 218 - 219

SamEventHandler with the

Three Generation Methods,

219 - 220

SamEventHandler with the

WorldGenSamPlant Code,

239 - 241

Sam’s Ore Block Json, 157

Sam’s Ore Item Json, 158

Sam’s Stone Blockstate

Json, 159

Sam’s Wall Block Json, 158

Sam’s Wall Item Json, 158

SamsMod Class, 336 - 343

SamsMod Cleaned Up,

345 - 346

SamsPickaxe completed,

108 - 105

samTE blockstate json, 198

samTE item json, 199

samTE0 block json, 199

setRotationAngles Added to

ModelSamMob, 293

setup error code, 20

Slab json, 166 - 167

Spawning Custom Particles,

409

Standard Block Code, 132

Standard ItemSamPlant

Class, 180

Start of ItemSamStoneBlock,

150

TNT Entity, 375

tntExample Block json, 375

tntExample blockstate json,

375

Two New BlockType Methods,

148

WorldGenSamPlant Extending

WorldGenerator, 230

localizations, 61

blocks, 136 , 157

Page 46: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

names 419

M

Mac

Forge, setting up, 15

JDK (Java Development Kit),

setting up, 14

manually spawning entities,

264 - 265

MCEdit, 245 , 248 - 249

downloading, 245 - 246

dungeons, creating, 248

exporting structures, 251

importing worlds, 249 - 250

installing, 247

Schematic Converter, 256

mcmod.info file, 350 - 351

MCP (Mod Coder Pack), 8

metadata

adding to items, 76

age metadata methods,

173 - 174

block bounds, 167 - 172

ItemKey, 79 - 81

json, 84 - 85

methods, classes, 28 - 29

mob behavior, changing, 380

mob eggs, adding, 296 - 297

mob spawn, removing, 47

mob spawner, 265 - 266

creating, 266 - 267

mobs

adding, 47

base values, 301

drops, 301 - 303

AI, adding, 299 - 300

attacking villagers, 300 - 301

classes, 289

cubes, adding/removing,

281 - 282

editing, cube properties,

280 - 281

EntitySamMob class,

298 - 299

models, exporting, 283 - 286

ModelSamMob class,

289 - 292

moving body parts, 292 - 293

Render class, 294 - 295

rendering, 295 - 296

spawning, 296

adding mob eggs,

296 - 297

adding natural spawns,

297 - 298

manually, 264 - 265

with mob spawner,

265 - 266

mod class

cleaning, 335 - 344

fixing, 81

Mod Coder Pack (MCP), 8

mod file code

armor, 120 - 121

blocks, 132

paxels, 111

pickaxe, 102

mod files, 48 - 50

all tool code, preInit method,

104

creating, 35 - 36

for creating food, 88

ModBlocks, SamsMod Class,

343 - 344

modders, adfoc.us, 15

ModelBiped, 279

models, 277 - 278

Techne, 279

editing cube properties,

280 - 281

exporting, 283 - 286

ModelSamMob class, 289 - 292

setRotationAngles, 293

modlist.mcf.li, 353

@Mod, 25 - 27

parameters, 26

mods

cleaning packages, 333 - 335

exporting with Forge, 349 - 351

making public, 352

uploading to websites,

352 - 353

open source mods, 360

code, 360 - 361

finding, 360

structuring, 333

uploading to websites,

352 - 353

modVersion, 369

moving body parts, 292 - 293

multiple items, adding using the

same file, 69 - 74

N

names

fixing, constructors, 77 - 78

of items, fixing, 59 - 61

removing, 76

Page 47: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

420 naming

naming

items, 65

packages, 32

natural spawns, adding, 297 - 298

O

object-oriented programming

(OOP), 26

onArmorTick, 381

onBlockActivated, 206

onBlockDestroyed method, 115

onDataPacket, 211

OOP (object-oriented program-

ming), 26

open source mods, 360

code, 360 - 361

finding, 360

OreDictionary, 224

Recipes, 225 - 226

registering, 225

ores

generating, 220 - 221

OreDictionary

recipes, 225 - 226

registering, 225 - 226

OreType, BlockSamStone class,

149 - 150

P-Q

packages, 23

cleaning, 333 - 335

creating, 29 - 32

ExampleMod, 24 - 25

folders, 335

naming, 32

parameters, @Mod, 26

paxels, 111

creating, ItemSamPaxel

class, 111 - 115

mod file code, 111

pickaxe, 109

ItemSamAxe class, 106

ItemSamPickaxe class,

creating, 103 - 105

json, 103 - 104

mod file code, 102

planetminecraft.com, 353

plants

adding

code to SamEventHandler,

237 - 241

random start metadata,

231 - 233

block states, creating,

173 - 174

coding, 171 - 173

creating, 176

crops, 174 - 176

customizing, 186 - 192

growing, 176 - 177

seeds, adding, 180 - 186

texture, adding, 177 - 180

WorldGen class, 229 - 230

checking and placing,

231 - 237

PlayerInteractEvent, 326

.png, texture, 61

PostInit, 56

postInit method, 64 - 65 , 104 - 106

potion effects, adding, 94 - 96

potions, potion effects, adding,

94 - 96

preInit method, 54 - 57

all tool code, 104

armor code, 120 - 121

code, 104

printing, to console, 36

Project Explorer, Eclipse, 29 - 30

proxies, 270

adding to mods, 270 - 271

changing, 335

ClientProxy, 271 - 272

CommonProxy, 271

public class, 26 - 27

R

random start metadata, adding,

to plant generation, 231 - 233

randomization, 231

randomizing drops, 321

readFromNBT, 211

Recipes

Apple Recipe, 41

crafting, 40 - 41

GameRegistry, 41 - 42

recipes, 39

shapes, 42 - 44

custom blocks, 140

OreDictionary, 225 - 226

Shapeless Recipes, crafting,

44

smelting recipes, crafting,

44 - 45

Page 48: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

String 421

recipes, fixing, 81 - 84

redKey json, 72 - 73 , 85

registerEntityEgg, 297

registering

blocks, 157

OreDictionary, 225

throwables, 307

tile entities, 202

registeringModEntity, 307

registerItemRenders, 314

registerModEntity, 272 - 273

registerRendering, 271

ClientProxy, 272

registerVariants, 148

removeSpawn, 320

removing

cubes, Techne, 281 - 282

entities, 319 - 320

items, from chests, 48

mob spawn, 47

names, 76

renaming items, 65

Render class, coding, 294 - 295

RenderExampleTNTPrimed, 377

rendering

entities, throwables,

314 - 315

mobs, 295 - 296

RenderingRegistry class, 295

RenderSamMob class, 294

RenderSnowball, 314

required settings, IRC (Internet

Relay Chat), 358

right-clicking, adding, to blocks,

206 - 210

rotation, models, 281

S

SamEventHandler

adding code to, 237 - 241

adding world generation code,

218 - 224

code, 222 - 224

creating, 217 - 218

randomizing location,

230 - 231

samPlant.json, 178

block states, 179

SamsMod Class

cleaned up version, 345 - 346

code, 336 - 343

ModBlocks, 343 - 344

Schematic Converter, 255 - 258

downloading, 255

generating structures,

261 - 264

generation file after export,

258 - 261

installing, 255 - 256

MCEdit, 256

seeds, adding, 180 - 186

Select Workspace Directory

window, 16

sending, data, tile entities,

210 - 213

server synchronization, tile

entities, 204 - 206

adding right-clicking, 206 - 210

sending data, 210 - 213

setBlockBoundsBasedOnState,

167

setCreativeTab method, 134

setHarvestLevel, 135

setHasSubTypes, 76 - 77

setPotionEffect, 94

setRotationAngles,

ModelSamMob class, 293

Shapeless Recipes, crafting, 44

shapeless recipes, 39

shapes

blocks, 166

Recipes, 42 - 44

sharing mods, 352

uploading to websites,

352 - 353

shovels, 109

ItemSamShovel class, 107

sided textures, adding, 163 - 164

@SidedProxy, 270

@SideOnly, 79

SKIPPED, 19

slabs, json, 166 - 167

smelting recipes, 39

crafting, 44 - 45

sound, step sound, blocks, 134

sounds, 410

source code, 8

spawning mobs, 296

adding mob eggs, 296 - 297

adding natural spawns,

297 - 298

manually, 264 - 265

spawning particles, 409

special ItemStacks, 45 - 46

spiders, 380

starting Minecraft, 17

static fields, 27

step sound, blocks, 134

String, 26

Page 49: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

422 structures

structures

exporting, MCEdit, 251

generating, Schematic

Converter, 261 - 264

mobs

spawning manually,

264 - 265

spawning with mob

spawner, 265 - 266

Schematic Converter,

256 - 258

generating structures,

261 - 264

generation file after

export, 258 - 261

structuring mods, 333

@SubscribeEvent, 320

@SuppressWarnings, 79

super, 89

ItemSamPaxel, 112 - 113

swords, 109

ItemSamSword clas, 108

knockback swords, 46

T

Techne, 279

cubes, adding/removing,

281 - 282

downloading, 278

editing cube properties,

280 - 281

installing, 278

interface, 279

models, 277 - 278

exporting, 283 - 286

texture, 279

adding,

to items, 61 - 66

to plants, 177 - 180

armor, 122

berries, 90

blocks, json, 137 - 140

items, 61 - 66

ItemSamThrow, 312

sided textures, adding,

163 - 164

tile entities, 198

worn armor texture, creating,

124 - 126

zombie texture, adding,

281 - 282

texture offset, 281

this.setDead(), 309

throwables

creating, Entity class, 308 - 310

entities, 311 - 312

rendering, 314 - 315

explosions, creating, 310 - 311

making the item throw the

entity, 313

registering, 307

tile entities, 195 - 196

adding

to blocks, 199 - 201

right-clicking to blocks,

206 - 210

creating, 202 - 204

registering, 202

server synchronization,

204 - 206

adding right-clicking,

206 - 210

sending data, 210 - 213

texture, 198

tile entity blocks, creating,

196 - 199

TileEntity class, 200 - 204 , 266

TileEntitySam class, 202

TNT, 373

tool speed, 102

ToolMaterial, 101

creating, 101 - 102

tools, 101

axe, 109

creating, 104 - 108

hoe, 109

ItemSamHoe Class,

106 - 107

paxels, 111

creating ItemSamPaxel

class, 111 - 115

pickaxe. See pickaxe

shovels, 109

ItemSamShovel class,

107

swords, 109

ItemSamSword clas, 108

ToolMaterial, creating,

101 - 102

trees, custom tree generation,

troubleshooting, 18 - 21

U

unbreakable blocks, creating,

135

UpdateChecker class, 369

Page 50: Sams Teach Yourself Mod Development for …ptgmedia.pearsoncmg.com/images/9780672337635/samplepages/...Sams Teach Yourself Mod Development for Minecraft® in 24 Hours ... Changing

zombies, drops, randomizing 423

updateEntity, 204

updates, 203

automatic update checking,

updateTick, 176

uploading mods to websites,

352 - 353

V

Vanilla Minecraft

armor egg-throwing abilities,

326 - 329

changing entities without

replacing, 320 - 324

editing block drops, 325

events, editing, 325

removing entities, 319 - 320

VARIANT, 144

variants, 78 - 81 , 159

villagers, attacking, 300 - 301

W

websites, uploading mods to,

352 - 353

Windows, JDK (Java Development

Kit), setting up, 9 - 13

Workspace Launcher window, 16

world generation, 217

EventHandler

creating, 217 - 218

SamEventHandler,

218 - 224

MCEdit. See MCEdit

OreDictionary, 224

Recipes, 225 - 226

registering, 225

randomizing location, 230 - 231

structures. See structures

WorldGen class

checking and placing,

231 - 237

creating, 229 - 230

WorldGen class

checking and placing,

231 - 237

creating, 229 - 230

WorldGenerator, 230

WorldGenSamDungeon, cleaning,

259 - 261

WorldGenSamPlant, 231 - 233

autocompletion, 238

WorldProviderExample class, 383

worlds, importing with MCEdit,

249 - 250

worn armor texture, creating,

124 - 126

writeToNBT, 211

X-Y-Z

zombie texture, adding, 281 - 282

zombies, drops, randomizing, 321