Skip to content

Commit

Permalink
Version 0.1.1
Browse files Browse the repository at this point in the history
Added OreBlock to show in the Smeltery
Added Bow properties
Added Temperature
Managed to Add Buckets!!
  • Loading branch information
Lak Moore authored and Lak Moore committed Jul 22, 2016
1 parent 6c7e3fa commit 62f7573
Show file tree
Hide file tree
Showing 9 changed files with 188 additions and 13 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
42 changes: 42 additions & 0 deletions src/main/java/me/johz/infinitic/items/InfiniBucket.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package me.johz.infinitic.items;

import java.awt.Color;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import me.johz.inifinitic.InfiniTiC;
import me.johz.inifinitic.client.textures.CustomTexture;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.init.Items;
import net.minecraft.item.ItemBucket;

public class InfiniBucket extends ItemBucket {
private String _name;
private Color _color;

public InfiniBucket(Block contents, String name, Color color) {
super(contents);

_name = name;
_color = color;

this.setUnlocalizedName("infinitic.bucket." + _name);
this.setContainerItem(Items.bucket);
}

@Override
@SideOnly(Side.CLIENT)
public void registerIcons (IIconRegister iconRegister)
{
TextureAtlasSprite fill = new CustomTexture(_color, InfiniTiC.MODID + ":bucket_fill", true);

((TextureMap)iconRegister).setTextureEntry(InfiniTiC.MODID + ":bucket_fill", fill);

this.setTextureName(InfiniTiC.MODID + ":bucket_fill");
super.registerIcons(iconRegister);
}

}
46 changes: 46 additions & 0 deletions src/main/java/me/johz/inifinitic/InfiniEvents.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package me.johz.inifinitic;

import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.eventhandler.Event.Result;
import mantle.world.WorldHelper;
import net.minecraft.block.Block;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MovingObjectPosition.MovingObjectType;
import net.minecraftforge.event.entity.player.FillBucketEvent;

public class InfiniEvents {

@SubscribeEvent
public void bucketFill (FillBucketEvent evt)
{
if (evt.current.getItem() == Items.bucket && evt.target.typeOfHit == MovingObjectType.BLOCK)
{
int hitX = evt.target.blockX;
int hitY = evt.target.blockY;
int hitZ = evt.target.blockZ;

if (evt.entityPlayer != null && !evt.entityPlayer.canPlayerEdit(hitX, hitY, hitZ, evt.target.sideHit, evt.current))
{
return;
}

Block target = evt.world.getBlock(hitX, hitY, hitZ);
for (int id = 0; id < InfiniTiC.MATERIALS.length; id++)
{
if (target == InfiniTiC.MATERIALS[id].fluidBlock)
{
WorldHelper.setBlockToAir(evt.world, hitX, hitY, hitZ);
if (!evt.entityPlayer.capabilities.isCreativeMode)
{
evt.result = new ItemStack(InfiniTiC.MATERIALS[id].fluidBucket, 1);
evt.setResult(Result.ALLOW);
return;
}
}
}
}
}


}
16 changes: 10 additions & 6 deletions src/main/java/me/johz/inifinitic/InfiniTiC.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import me.johz.inifinitic.lib.data.MaterialJSON;
import me.johz.inifinitic.lib.helpers.GenericHelper;
import me.johz.inifinitic.lib.helpers.JsonConfigHelper;
import net.minecraftforge.common.MinecraftForge;

import org.apache.logging.log4j.Logger;

Expand All @@ -28,14 +29,13 @@ public class InfiniTiC {
* THE BIG LONG LIST OF THINGS TO DO:
*
* TODO: Auto-select material ids from range
* TODO: Buckets
* TODO: Get TiC to understand how much liquid is in the smeltery
*/


public static final String NAME = "Infini-TiC";
public static final String MODID = "infinitic";
public static final String VERSION = "1.7.10-0.0.1";
public static final String VERSION = "1.7.10-0.1.1";

public static Logger LOGGER;
public static File CONFIGDIR;
Expand All @@ -54,6 +54,14 @@ public void preInit(FMLPreInitializationEvent e) {

// Read configs
MATERIALS = makeMaterials(CONFIGDIR);

//try making the materials in preInit... it still works!
for (MaterialData mat: MATERIALS) {
mat.init();
}

//Event Handler... to handle all our events!
MinecraftForge.EVENT_BUS.register(new InfiniEvents());
}

@Mod.EventHandler
Expand All @@ -62,9 +70,6 @@ public void init(FMLInitializationEvent e) { }
@Mod.EventHandler
public void postInit(FMLPostInitializationEvent e) {

for (MaterialData mat: MATERIALS) {
mat.init();
}

}

Expand Down Expand Up @@ -100,7 +105,6 @@ private MaterialData[] makeMaterials(File dir) {
return ds.toArray(new MaterialData[ds.size()]);
}

@SuppressWarnings("resource")
private MaterialData[] makeMaterialsZipped(File zipDir) {
List<MaterialData> ds = new ArrayList<MaterialData>();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,34 @@
package me.johz.inifinitic.client.textures;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;

import me.johz.inifinitic.InfiniTiC;
import me.johz.inifinitic.lib.helpers.Colorize;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.data.AnimationMetadataSection;
import net.minecraft.util.ResourceLocation;

public class CustomTexture extends TextureAtlasSprite {

private int red = 0;
private int green = 0;
private int blue = 0;
private boolean _isBucket = false;

public CustomTexture(Color color, String name) {
super(name);
red = color.getRed(); green = color.getGreen(); blue = color.getBlue();
}

public CustomTexture(Color color, String name, boolean isBucket) {
super(name);

_isBucket = isBucket;
red = color.getRed(); green = color.getGreen(); blue = color.getBlue();
}

Expand All @@ -29,8 +42,37 @@ public void loadSprite(BufferedImage[] image, AnimationMetadataSection animation
}
}

if (_isBucket)
{
BufferedImage fill = image[0];
if (fill != null) {
try {
// load base image
BufferedImage bucket = ImageIO.read(Minecraft.getMinecraft().getResourceManager().getResource(new ResourceLocation(InfiniTiC.MODID, "textures/items/bucket_empty.png")).getInputStream());

// create the new image
BufferedImage combined = new BufferedImage(fill.getWidth(), fill.getHeight(), BufferedImage.TYPE_INT_ARGB);

// paint both images, preserving the alpha channels
Graphics g = combined.getGraphics();
g.drawImage(bucket, 0, 0, null);
g.drawImage(fill, 0, 0, null);

// Save as new image
image[0] = combined;

g.dispose();
}
catch (IOException e)
{
InfiniTiC.LOGGER.error("InfiniTiC : Something went wrong drawing a bucket! : " + e.getStackTrace());
}
}
}

super.loadSprite(image, animation, useAnisotropicFiltering);

}


}
41 changes: 36 additions & 5 deletions src/main/java/me/johz/inifinitic/lib/data/MaterialData.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,19 @@
import cpw.mods.fml.common.event.FMLInterModComms;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import me.johz.infinitic.items.InfiniBucket;
import me.johz.inifinitic.InfiniTiC;
import me.johz.inifinitic.blocks.BlockInfiniFluid;
import me.johz.inifinitic.lib.errors.JSONValidationException;
import me.johz.inifinitic.lib.helpers.GenericHelper;
import me.johz.inifinitic.lib.helpers.NameConversionHelper;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import tconstruct.library.TConstructRegistry;
Expand All @@ -35,10 +38,12 @@ public class MaterialData {
public MaterialJSON json;
public Fluid fluid;
public Block fluidBlock;
public InfiniBucket fluidBucket;
public int meltingValue;

public MaterialData(MaterialJSON json, String filename) {
this.json = json;

try {
json.validate();
} catch (JSONValidationException e) {
Expand Down Expand Up @@ -69,6 +74,14 @@ private void setLocalize(String name) {

private void setRecipes() {

if (json.toolData.temperature > 0) {
meltingValue = json.toolData.temperature;
}
else
{
meltingValue = defaultMeltingValue;
}

FluidStack ingotFluid = new FluidStack(fluid, ingotLiquidValue);
FluidStack oreFluid = new FluidStack(fluid, oreLiquidValue);
FluidStack blockFluid = new FluidStack(fluid, blockLiquidValue);
Expand All @@ -77,21 +90,22 @@ private void setRecipes() {
// Melting recipes

Block renderBlock = NameConversionHelper.getBlock(json.renderblock);
Block renderOre = NameConversionHelper.getBlock(json.renderore);

for (ItemStack itm: json.getBlocks()) {
Smeltery.addMelting(itm, renderBlock, json.renderblockMeta, defaultMeltingValue, blockFluid);
Smeltery.addMelting(itm, renderBlock, json.renderblockMeta, meltingValue * 5, blockFluid);
}

for (ItemStack itm: json.getOres()) {
Smeltery.addMelting(itm, renderBlock, json.renderblockMeta, defaultMeltingValue, oreFluid);
Smeltery.addMelting(itm, renderOre, json.renderoreMeta, meltingValue, oreFluid);
}

for (ItemStack itm: json.getIngots()) {
Smeltery.addMelting(itm, renderBlock, json.renderblockMeta, defaultMeltingValue, ingotFluid);
Smeltery.addMelting(itm, renderBlock, json.renderblockMeta, meltingValue, ingotFluid);
}

for (ItemStack itm: json.getDusts()) {
Smeltery.addMelting(itm, renderBlock, json.renderblockMeta, defaultMeltingValue, ingotFluid);
Smeltery.addMelting(itm, renderBlock, json.renderblockMeta, meltingValue, ingotFluid);
}


Expand Down Expand Up @@ -136,6 +150,18 @@ private void setMaterial() {
} else if (json.toolData.stonebound < 0) {
tag.setFloat("Jagged", json.toolData.stonebound);
}
if (json.toolData.drawspeed > 0) {
tag.setInteger("Bow_DrawSpeed", json.toolData.drawspeed);
}
if (json.toolData.projectilespeed > 0) {
tag.setFloat("Bow_ProjectileSpeed", json.toolData.projectilespeed);
}
if (json.toolData.projectilemass > 0) {
tag.setFloat("Projectile_Mass", json.toolData.projectilemass);
}
if (json.toolData.projectilefragility > 0) {
tag.setFloat("Projectile_Fragility", json.toolData.projectilefragility);
}

FMLInterModComms.sendMessage("TConstruct", "addMaterial", tag);

Expand Down Expand Up @@ -172,5 +198,10 @@ private void setFluid(String name) {
}

FluidType.registerFluidType(name, fluidBlock, 0, 300, fluid, true);

//Attempt at Bucket Implementation
fluidBucket = new InfiniBucket(fluidBlock, name, json.toolData.getColorType());
GameRegistry.registerItem(fluidBucket, "bucket_" + name);
FluidContainerRegistry.registerFluidContainer(fluid, new ItemStack(fluidBucket), new ItemStack(Items.bucket));
}
}
4 changes: 3 additions & 1 deletion src/main/java/me/johz/inifinitic/lib/data/MaterialJSON.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ public class MaterialJSON implements IJson {

public ToolDataJSON toolData;

public String renderore;
public int renderoreMeta = 0;
public String renderblock;
public int renderblockMeta = 0;

Expand Down Expand Up @@ -61,7 +63,7 @@ protected ItemStack[] getOfType(String type) {
items.removeAll(NameConversionHelper.getAllItems(itemName));
}
}

return items.toArray(new ItemStack[items.size()]);
}

Expand Down
8 changes: 8 additions & 0 deletions src/main/java/me/johz/inifinitic/lib/data/ToolDataJSON.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,14 @@ public class ToolDataJSON implements IJson {
// TODO: Fix this to allow four-part hex and other formats
String color;

int temperature;

//Bow things
int drawspeed;
float projectilespeed;
float projectilemass;
float projectilefragility;

public int getColor(boolean withAlpha) {
Color col = getColorType();
if (withAlpha) {
Expand Down

0 comments on commit 62f7573

Please sign in to comment.