Skip to content

Commit

Permalink
Merge pull request #5 from canitzp/1.9
Browse files Browse the repository at this point in the history
WorldGen, OilSand
  • Loading branch information
Mrbrutal committed Mar 29, 2016
2 parents 4faba18 + ecddb45 commit 5fc8e01
Show file tree
Hide file tree
Showing 14 changed files with 270 additions and 4 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
/build
/Traincraft-5.iws
/out
/gradle
/.gradle
/run
/Traincraft-5.ipr
Expand Down
1 change: 0 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ minecraft {
makeObfSourceJar = false
useDepAts = true
replaceIn "Traincraft.java"
replace "@MODID@", config.modid.toString()
replace "@MODNAME@", config.modName.toString()
replace "@VERSION@", config.modVersion.toString()
}
Expand Down
1 change: 0 additions & 1 deletion build.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
modid=traincraft
modName=Traincraft
modVersion=1.0.0
minecraftVersion=1.9
Expand Down
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
6 changes: 6 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#Mon Sep 14 12:28:28 PDT 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.7-bin.zip
19 changes: 19 additions & 0 deletions src/main/java/si/meansoft/traincraft/BlockRegistry.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package si.meansoft.traincraft;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import si.meansoft.traincraft.blocks.BlockBase;

/**
* @author canitzp
*/
public class BlockRegistry {

public static Block oilSand;

public static void preInit(){
oilSand = new BlockBase(Material.sand, "oilSand").generateBlock(Blocks.sand, 50, 80, 7, 11).addOreDict("oreOilSand").setForgeModel();
}

}
33 changes: 32 additions & 1 deletion src/main/java/si/meansoft/traincraft/Traincraft.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
package si.meansoft.traincraft;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.*;
import net.minecraftforge.fml.common.registry.GameRegistry;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import si.meansoft.traincraft.blocks.BlockBase;
import si.meansoft.traincraft.gen.WorldGen;
import si.meansoft.traincraft.network.CommonProxy;

@Mod(modid = Traincraft.MODID, name= Traincraft.NAME, version = Traincraft.VERSION)
public class Traincraft {

public static final String MODID = "@MODID@";
public static final String MODID = "traincraft";
public static final String NAME = "@MODNAME@";
public static final String VERSION = "@VERSION@";
public static final String CLIENTPROXY = "si.meansoft.traincraft.network.ClientProxy";
Expand All @@ -20,15 +25,41 @@ public class Traincraft {
@SidedProxy(clientSide = Traincraft.CLIENTPROXY, serverSide = Traincraft.COMMONPROXY)
public static CommonProxy proxy;
public static Logger logger = LogManager.getLogger(NAME);
public static CreativeTabs tab;

@Mod.EventHandler
public void preInit(FMLPreInitializationEvent evt) {
logger.info("Let the trains out! " + NAME + ": " + VERSION + "!");
tab = new CreativeTabs("traincraftTab") {
@Override
public Item getTabIconItem() {
return Item.getItemFromBlock(BlockRegistry.oilSand);
}
};
logger.info("Register Blocks, Items, ...");
BlockRegistry.preInit();
GameRegistry.registerWorldGenerator(new WorldGen(), 10);
logger.info("Register Renderer!");
proxy.preInit(evt);
logger.info("Finished PreInitializing!");
}
@Mod.EventHandler
public void init(FMLInitializationEvent evt) {
proxy.init(evt);
logger.info("Finished Initializing");
}
@Mod.EventHandler
public void postInit(FMLPostInitializationEvent evt) {
proxy.postInit(evt);
logger.info("Now you can't stop the trains!");
}

public static void registerBlock(BlockBase block, String blockName){
block.setUnlocalizedName(MODID + ":" + blockName);
block.setRegistryName(blockName);
if(!block.forgeModel) CommonProxy.addStackToRender(Item.getItemFromBlock(block));
block.setCreativeTab(tab);
GameRegistry.registerBlock(block);
}

}
49 changes: 49 additions & 0 deletions src/main/java/si/meansoft/traincraft/blocks/BlockBase.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package si.meansoft.traincraft.blocks;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.oredict.OreDictionary;
import si.meansoft.traincraft.Traincraft;
import si.meansoft.traincraft.gen.WorldGen;
import si.meansoft.traincraft.network.CommonProxy;

/**
* @author canitzp
*/
public class BlockBase extends Block {

public boolean forgeModel = false;

public BlockBase(Material materialIn, String name) {
super(materialIn);
Traincraft.registerBlock(this, name);
}

/**
* @param toSpawnInside The Block it'll spawn inside. e.g.: Coal='net.minecraft.init.Blocks.stone'
* @param minY The minimal height for the Block to spawn. e.g.: Coal=0
* @param maxY The maximal height for the Block to spawn. e.g.: Coal=128
* @param maxVeinSize The maximal amount of Blocks at one place. e.g.: Coal=17
* @param chanceToSpawn The Chance to spawn the Block. e.g.: Coal=20
* The example values you'll find in the class: 'net.minecraft.world.gen.ChunkProviderSettings'
*/
public BlockBase generateBlock(Block toSpawnInside, int minY, int maxY, int maxVeinSize, int chanceToSpawn){
WorldGen.addBlockToSpawn(this, toSpawnInside, minY, maxY, maxVeinSize, chanceToSpawn);
return this;
}

public BlockBase addOreDict(String oreDict){
OreDictionary.registerOre(oreDict, this);
return this;
}

public BlockBase setForgeModel(String name){
CommonProxy.addForgeRender(this, new ResourceLocation(name));
return this;
}
public BlockBase setForgeModel(){
return setForgeModel(getRegistryName());
}

}
79 changes: 79 additions & 0 deletions src/main/java/si/meansoft/traincraft/gen/WorldGen.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package si.meansoft.traincraft.gen;

import net.minecraft.block.Block;
import net.minecraft.block.state.pattern.BlockMatcher;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.WorldType;
import net.minecraft.world.chunk.IChunkGenerator;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.feature.WorldGenMinable;
import net.minecraftforge.fml.common.IWorldGenerator;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

/**
* @author canitzp
*/
public class WorldGen implements IWorldGenerator {

private static HashMap<Block, SpawnProps> blocksToSpawnInOverworld = new HashMap<Block, SpawnProps>();

@Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) {
if(world.getWorldType() != WorldType.FLAT){
switch(world.provider.getDimension()){
case 0: spawnOverworld(random, world, chunkX*16, chunkZ*16);
}
}
}

public void spawnOverworld(Random rnd, World world, int x, int z){
for(Map.Entry entry : blocksToSpawnInOverworld.entrySet()){
SpawnProps props = (SpawnProps) entry.getValue();
addOreSpawn(new ItemStack((Block) entry.getKey()), props.blockToSpawnInside, world, rnd, x, z, props.veinSize, props.chance, props.minY, props.maxY);
}
}

public void addOreSpawn(ItemStack stack, Block blockIn, World world, Random random, int blockXPos, int blockZPos, int maxVeinSize, int chancesToSpawn, int minY, int maxY){
if(maxY > minY){
int yDiff = maxY-minY;
for(int i = 0; i < chancesToSpawn; i++){
int posX = blockXPos+random.nextInt(16);
int posY = minY+random.nextInt(yDiff);
int posZ = blockZPos+random.nextInt(16);
Block block = Block.getBlockFromItem(stack.getItem());
new WorldGenMinable(block.getStateFromMeta(stack.getMetadata()), maxVeinSize, BlockMatcher.forBlock(blockIn)).generate(world, random, new BlockPos(posX, posY, posZ));
}
}
}

/**
* @param block The Block to spawn
* @param minY The minimal height for the Block to spawn. e.g.: Coal=0
* @param maxY The maximal height for the Block to spawn. e.g.: Coal=128
* @param maxVeinSize The maximal amount of Blocks at one place. e.g.: Coal=17
* @param chanceToSpawn The Chance to spawn the Block. e.g.: Coal=20
* The example values you'll find in the class: 'net.minecraft.world.gen.ChunkProviderSettings'
*/
public static void addBlockToSpawn(Block block, Block toSpawnInside, int minY, int maxY, int maxVeinSize, int chanceToSpawn){
if(!blocksToSpawnInOverworld.containsKey(block))
blocksToSpawnInOverworld.put(block, new SpawnProps(toSpawnInside, chanceToSpawn, maxY, minY, maxVeinSize));
}

public static class SpawnProps{
public int minY, maxY, veinSize, chance;
public Block blockToSpawnInside;
public SpawnProps(Block blockToSpawnInside, int chance, int maxY, int minY, int veinSize) {
this.chance = chance;
this.maxY = maxY;
this.minY = minY;
this.veinSize = veinSize;
this.blockToSpawnInside = blockToSpawnInside;
}
}

}
32 changes: 32 additions & 0 deletions src/main/java/si/meansoft/traincraft/network/ClientProxy.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,38 @@

package si.meansoft.traincraft.network;

import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import si.meansoft.traincraft.Traincraft;

import java.util.Map;

public class ClientProxy extends CommonProxy {

@Override
public void preInit(FMLPreInitializationEvent event) {
for(Item item : renderList){
if(item != null) {
registerModel(item);
}
}
for(Map.Entry<Block, ResourceLocation> entry : forgeRender.entrySet()){
if(entry.getKey() != null && entry.getValue() != null){
registerForgeBlock(entry.getKey(), entry.getValue());
}
}
}

private void registerModel(Item item){
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(new ResourceLocation(Traincraft.MODID, item.getRegistryName()), "inventory"));
}

private void registerForgeBlock(Block block, ResourceLocation location){
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), 0, new ModelResourceLocation(location, "inventory"));
}
}
33 changes: 33 additions & 0 deletions src/main/java/si/meansoft/traincraft/network/CommonProxy.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,38 @@

package si.meansoft.traincraft.network;

import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class CommonProxy {

protected static List<Item> renderList = new ArrayList<Item>();
protected static HashMap<Block, ResourceLocation> forgeRender = new HashMap<Block, ResourceLocation>();

public void preInit(FMLPreInitializationEvent event){}

public void init(FMLInitializationEvent event){}

public void postInit(FMLPostInitializationEvent event){}

public static void addStackToRender(Item item){
if(!renderList.contains(item)) {
renderList.add(item);
}
}

public static void addForgeRender(Block block, ResourceLocation location){
if(!forgeRender.containsKey(block)){
forgeRender.put(block, location);
}
}

}
14 changes: 14 additions & 0 deletions src/main/resources/assets/traincraft/blockstates/oilSand.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"forge_marker": 1,
"defaults": {
"textures": {
"all": "traincraft:blocks/blockOilSand"
},
"model": "cube_all",
"transform": "forge:default-block"
},
"variants": {
"normal": [{}],
"inventory": [{}]
}
}
6 changes: 6 additions & 0 deletions src/main/resources/assets/traincraft/lang/en_US.lang
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#Some special things:
itemGroup.traincraftTab=Traincraft


#Blocks:
tile.traincraft:oilSand.name=Oil Sand
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 5fc8e01

Please sign in to comment.