commit current functioning code, needs assets

This commit is contained in:
Mohammad-Ali Minaie
2018-02-24 19:43:22 -05:00
parent 01250d528c
commit 983d6b0418
9 changed files with 195 additions and 17 deletions

View File

@@ -10,9 +10,11 @@ import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents; import net.minecraft.init.SoundEvents;
import net.minecraft.inventory.ItemStackHelper;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemSpade; import net.minecraft.item.ItemSpade;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.*; import net.minecraft.util.*;
import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.AxisAlignedBB;
@@ -28,6 +30,7 @@ import nmd.primal.core.common.helper.PlayerHelper;
import nmd.primal.core.common.recipes.FireSource; import nmd.primal.core.common.recipes.FireSource;
import nmd.primal.forgecraft.ModInfo; import nmd.primal.forgecraft.ModInfo;
import nmd.primal.forgecraft.crafting.BloomeryCrafting; import nmd.primal.forgecraft.crafting.BloomeryCrafting;
import nmd.primal.forgecraft.crafting.CrucibleCrafting;
import nmd.primal.forgecraft.init.ModItems; import nmd.primal.forgecraft.init.ModItems;
import nmd.primal.forgecraft.items.SlottedTongs; import nmd.primal.forgecraft.items.SlottedTongs;
import nmd.primal.forgecraft.tiles.TileBloomery; import nmd.primal.forgecraft.tiles.TileBloomery;
@@ -108,19 +111,28 @@ public class BloomeryBase extends CustomContainerFacing implements ITileEntityPr
" Fuel Remaining: " + tileItem.getCount(); " Fuel Remaining: " + tileItem.getCount();
ITextComponent itextcomponent = new TextComponentString(display); ITextComponent itextcomponent = new TextComponentString(display);
player.sendStatusMessage(itextcomponent, false); player.sendStatusMessage(itextcomponent, false);
NBTTagCompound tag = tile.getSlotStack(1).getSubCompound("BlockEntityTag");
BloomeryCrafting recipe = BloomeryCrafting.getRecipe(tile.getSlotStack(1)); NonNullList<ItemStack> ingList = NonNullList.<ItemStack>withSize(5, ItemStack.EMPTY);
NonNullList<ItemStack> dropList = NonNullList.<ItemStack>withSize(1, ItemStack.EMPTY);
ItemStackHelper.loadAllItems(tag, ingList);
ItemStackHelper.loadAllItems(tag, dropList);
CrucibleCrafting recipe = CrucibleCrafting.getRecipe(ingList.get(0), ingList.get(1), ingList.get(2), ingList.get(3), ingList.get(4));
if(recipe != null) { if(recipe != null) {
Integer minTemp = recipe.getHeatThreshold(); Integer minTemp = recipe.getCookTemp();
Integer cookCounter = tile.getCookCounter(); Integer cookCounter = tile.getCookCounter();
Integer idealTime = recipe.getIdealTime(); Integer idealTime = recipe.getCookTime();
Integer remainingTime = idealTime - cookCounter; Integer remainingTime = idealTime - cookCounter;
String display1 = String display1 =
"Cooking: " + tileItem1.getDisplayName() + "Cooking: " + tileItem1.getDisplayName() +
" Target Temp: " + minTemp.toString() + " Target Temp: " + minTemp.toString() +
" Time Left: " + remainingTime.toString(); " Time Left: " + remainingTime.toString();
ITextComponent itextcomponent1 = new TextComponentString(display1); String display2 = tileItem1.getDisplayName() + "finished.";
ITextComponent itextcomponent1 = null;
if (tileItem1.getSubCompound("BlockEntityTag").getBoolean("status")) {
itextcomponent1 = new TextComponentString(display2);
} else itextcomponent1 = new TextComponentString(display1);
player.sendStatusMessage(itextcomponent1, false); player.sendStatusMessage(itextcomponent1, false);
} }

View File

@@ -4,6 +4,8 @@ import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockContainer;
import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
@@ -49,7 +51,7 @@ public class NBTCrucible extends BlockContainer implements ITileEntityProvider,
protected static final AxisAlignedBB boundBox = new AxisAlignedBB(4/16D, 0.0D, 4/16D, 12/16D, 7/16D, 12/16D); protected static final AxisAlignedBB boundBox = new AxisAlignedBB(4/16D, 0.0D, 4/16D, 12/16D, 7/16D, 12/16D);
private Ingredient crucibleIngredients; //private Ingredient crucibleIngredients;
public NBTCrucible(Material material, String registryName) { public NBTCrucible(Material material, String registryName) {
super(material); super(material);
@@ -57,7 +59,7 @@ public class NBTCrucible extends BlockContainer implements ITileEntityProvider,
setRegistryName(registryName); setRegistryName(registryName);
setCreativeTab(ModInfo.TAB_FORGECRAFT); setCreativeTab(ModInfo.TAB_FORGECRAFT);
setHardness(3.0f); setHardness(3.0f);
//crucibleIngredients.apply(new ItemStack(Blocks.IRON_ORE, 1)); //setDefaultState(this.blockState.getBaseState().withProperty(PrimalAPI.States.ACTIVE, Boolean.valueOf(false)));
} }
@Override @Override
@@ -169,7 +171,7 @@ public class NBTCrucible extends BlockContainer implements ITileEntityProvider,
if (stack.hasDisplayName()) if (stack.hasDisplayName())
{ {
TileEntity tileentity = world.getTileEntity(pos); TileEntity tileentity = world.getTileEntity(pos);
//world.setBlockState(pos, state.withProperty(PrimalAPI.States.ACTIVE, Boolean.valueOf(false)), 2);
if (tileentity instanceof TileNBTCrucible) if (tileentity instanceof TileNBTCrucible)
{ {
//((TileStorageCrate)tileentity).setCustomName(stack.getDisplayName()); //((TileStorageCrate)tileentity).setCustomName(stack.getDisplayName());
@@ -177,6 +179,45 @@ public class NBTCrucible extends BlockContainer implements ITileEntityProvider,
} }
} }
/*@Override
public int getMetaFromState(IBlockState state) {
int i = 0;
if( (state.getValue(PrimalAPI.States.ACTIVE) == false)) {
i = 0;
return i;
}
if ( (state.getValue(PrimalAPI.States.ACTIVE) == true)) {
i = 14;
return i;
}
return i;
}
@Override
public IBlockState getStateFromMeta(int meta) {
EnumFacing enumfacing;
Boolean active;
switch (meta & 7)
{
case 0:
active = false;
break;
case 1:
active = true;
break;
default:
active = false;
}
return this.getDefaultState().withProperty(PrimalAPI.States.ACTIVE, Boolean.valueOf(active));
}
@Override
protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[] {PrimalAPI.States.ACTIVE});
}*/
@Override @Override
public int quantityDropped(Random random) public int quantityDropped(Random random)

View File

@@ -119,7 +119,7 @@ public class ModBlocks {
public static void init() { public static void init() {
//FISH_TRAP = RegistryHelper.addBlock("fish_trap", new FishTrap(), ItemFishTraps::new, "fishtrap");
nbtCrucible = new NBTCrucible(Material.ROCK, "nbtCrucible"); nbtCrucible = new NBTCrucible(Material.ROCK, "nbtCrucible");
forge_brick = new Forge(Material.ROCK, "forge_brick", 5000); forge_brick = new Forge(Material.ROCK, "forge_brick", 5000);
forge_adobe = new Forge(Material.ROCK, "forge_adobe", 5000); forge_adobe = new Forge(Material.ROCK, "forge_adobe", 5000);

View File

@@ -32,8 +32,8 @@ public class ModCrafting{
new ItemStack(Blocks.IRON_ORE, 1), new ItemStack(Blocks.IRON_ORE, 1),
new ItemStack(ModBlocks.ironball, 1), new ItemStack(ModBlocks.ironball, 1),
100, 100,
20, 200,
20); 100);
/***CASTING BLOCK***/ /***CASTING BLOCK***/
RecipeHandler.addShapedOreRecipe(new ItemStack(ModBlocks.castingblock), RecipeHandler.addShapedOreRecipe(new ItemStack(ModBlocks.castingblock),

View File

@@ -15,8 +15,10 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import nmd.primal.core.api.PrimalAPI; import nmd.primal.core.api.PrimalAPI;
import nmd.primal.forgecraft.ModInfo; import nmd.primal.forgecraft.ModInfo;
import nmd.primal.forgecraft.blocks.Crucibles.NBTCrucible;
import nmd.primal.forgecraft.items.*; import nmd.primal.forgecraft.items.*;
import nmd.primal.forgecraft.items.armor.CustomHelmet; import nmd.primal.forgecraft.items.armor.CustomHelmet;
import nmd.primal.forgecraft.items.blocks.ItemNBTCrucible;
import nmd.primal.forgecraft.items.casting.CastingPart; import nmd.primal.forgecraft.items.casting.CastingPart;
import nmd.primal.forgecraft.items.parts.BronzeToolPart; import nmd.primal.forgecraft.items.parts.BronzeToolPart;
import nmd.primal.forgecraft.items.parts.ToolPart; import nmd.primal.forgecraft.items.parts.ToolPart;
@@ -32,6 +34,7 @@ import nmd.primal.forgecraft.items.weapons.SlayerSword;
public class ModItems { public class ModItems {
//public static Item test; //public static Item test;
public static Item itemnbtcrucible;
public static Item slottedtongs; public static Item slottedtongs;
public static Item itemcrucible; public static Item itemcrucible;
public static Item bellowshandle; public static Item bellowshandle;
@@ -144,6 +147,7 @@ public class ModItems {
public static void init() { public static void init() {
//OBJLoader.INSTANCE.addDomain(ModInfo.MOD_ID); //OBJLoader.INSTANCE.addDomain(ModInfo.MOD_ID);
//pistonbellows = new ItemBellowsHandle("pistonbellows"); //pistonbellows = new ItemBellowsHandle("pistonbellows");
itemnbtcrucible = new ItemNBTCrucible("itemnbtcrucible", ModBlocks.nbtCrucible);
slottedtongs = new SlottedTongs("slottedtongs"); slottedtongs = new SlottedTongs("slottedtongs");
itemcrucible = new ItemCrucible("itemcrucible"); itemcrucible = new ItemCrucible("itemcrucible");
bellowshandle = new BaseItem("bellowshandle"); bellowshandle = new BaseItem("bellowshandle");
@@ -270,6 +274,7 @@ public class ModItems {
} }
public static void register() { public static void register() {
ForgeRegistries.ITEMS.register(itemnbtcrucible);
ForgeRegistries.ITEMS.register(slottedtongs); ForgeRegistries.ITEMS.register(slottedtongs);
ForgeRegistries.ITEMS.register(itemcrucible); ForgeRegistries.ITEMS.register(itemcrucible);
ForgeRegistries.ITEMS.register(castingmud); ForgeRegistries.ITEMS.register(castingmud);
@@ -391,6 +396,7 @@ public class ModItems {
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public static void registerRenders() { public static void registerRenders() {
registerRender(itemnbtcrucible);
registerRender(itemcrucible); registerRender(itemcrucible);
registerRender(castingmud); registerRender(castingmud);
registerRender(bellowshandle); registerRender(bellowshandle);

View File

@@ -0,0 +1,44 @@
package nmd.primal.forgecraft.items.blocks;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import nmd.primal.core.api.interfaces.IFireProof;
import nmd.primal.forgecraft.ModInfo;
/**
* Created by mminaie on 2/7/18.
*/
public class AbstractItemBlock extends ItemBlock {
private boolean is_fire_proof;
public AbstractItemBlock(Block block, boolean sub_types) {
super(block);
this.setHasSubtypes(sub_types);
}
public AbstractItemBlock(Block block) {
this(block, false);
}
@Override
public CreativeTabs getCreativeTab() {
return ModInfo.TAB_FORGECRAFT;
}
/**
* Retrieves the normal 'lifespan' of this item when it is dropped on the ground as amount EntityItem.
* This is in ticks, standard result is 6000, or 5 mins.
*
* @param itemStack The current ItemStack
* @param world The world the entity is in
* @return The normal lifespan in ticks.
*/
@Override
public int getEntityLifespan(ItemStack itemStack, World world) {
return 6000;
}
}

View File

@@ -0,0 +1,73 @@
package nmd.primal.forgecraft.items.blocks;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.IItemPropertyGetter;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import nmd.primal.core.common.helper.PlayerHelper;
import nmd.primal.forgecraft.ModInfo;
import nmd.primal.forgecraft.init.ModItems;
import javax.annotation.Nullable;
/**
* Created by mminaie on 2/7/18.
*/
public class ItemNBTCrucible extends AbstractItemBlock {
public ItemNBTCrucible(String name, Block block) {
super(block);
this.setUnlocalizedName(name);
this.setRegistryName(name);
this.setCreativeTab(ModInfo.TAB_FORGECRAFT);
this.addPropertyOverride(new ResourceLocation("type"), new IItemPropertyGetter() {
@SideOnly(Side.CLIENT)
public float apply(ItemStack item, @Nullable World worldIn, @Nullable EntityLivingBase entityIn)
{
//TODO get the item name
if (item.hasTagCompound()) {
if (getStatus(item)){
return 0.1f;
}
}
return 0.0F;
}
});
}
public boolean getStatus(ItemStack stack) {
if(!stack.isEmpty()) {
if (stack.hasTagCompound()) {
if (stack.getSubCompound("tags") != null) {
return stack.getSubCompound("BlockEntityTag").getBoolean("status");
}
}
}
return false;
}
@Override
public void onUpdate(ItemStack item, World world, Entity player, int itemSlot, boolean isSelected) {
if(!world.isRemote) {
System.out.println("We doin it?");
if (!item.hasTagCompound()) {
//item.setTagCompound(new NBTTagCompound());
NBTTagCompound tag = item.getSubCompound("BlockEntityTag");
//item.getTagCompound().setTag("BlockEntityTag", tags);
System.out.println(tag);
}
}
}
}

View File

@@ -83,7 +83,9 @@ public class TileBloomery extends TileBaseSlot implements ITickable {
NonNullList<ItemStack> ingList = NonNullList.<ItemStack>withSize(5, ItemStack.EMPTY); NonNullList<ItemStack> ingList = NonNullList.<ItemStack>withSize(5, ItemStack.EMPTY);
NonNullList<ItemStack> dropList = NonNullList.<ItemStack>withSize(1, ItemStack.EMPTY); NonNullList<ItemStack> dropList = NonNullList.<ItemStack>withSize(1, ItemStack.EMPTY);
NBTTagCompound tag = this.getSlotStack(1).getSubCompound("BlockEntityTag"); NBTTagCompound tag = this.getSlotStack(1).getSubCompound("BlockEntityTag");
//System.out.println(this.getSlotStack(1).getTagCompound());
if(tag != null) { if(tag != null) {
System.out.println(tag);
ItemStackHelper.loadAllItems(tag, ingList); ItemStackHelper.loadAllItems(tag, ingList);
ItemStackHelper.loadAllItems(tag, dropList); ItemStackHelper.loadAllItems(tag, dropList);
CrucibleCrafting recipe = CrucibleCrafting.getRecipe(ingList.get(0), ingList.get(1), ingList.get(2), ingList.get(3), ingList.get(4)); CrucibleCrafting recipe = CrucibleCrafting.getRecipe(ingList.get(0), ingList.get(1), ingList.get(2), ingList.get(3), ingList.get(4));
@@ -92,24 +94,21 @@ public class TileBloomery extends TileBaseSlot implements ITickable {
!this.getSlotStack(1).getSubCompound("BlockEntityTag").getBoolean("status")) { !this.getSlotStack(1).getSubCompound("BlockEntityTag").getBoolean("status")) {
cookCounter++; cookCounter++;
this.getSlotStack(1).getSubCompound("BlockEntityTag").setBoolean("hot", true); this.getSlotStack(1).getSubCompound("BlockEntityTag").setBoolean("hot", true);
System.out.println("Cooking");
this.updateBlock(); this.updateBlock();
this.markDirty(); this.markDirty();
} }
if (cookCounter >= recipe.getCookTime() && !this.getSlotStack(1).getSubCompound("BlockEntityTag").getBoolean("status")) { if (cookCounter >= recipe.getCookTime() && !this.getSlotStack(1).getSubCompound("BlockEntityTag").getBoolean("status")) {
this.getSlotStack(1).getSubCompound("BlockEntityTag").setBoolean("status", true); this.getSlotStack(1).getSubCompound("BlockEntityTag").setBoolean("status", true);
this.getSlotStack(1).getSubCompound("BlockEntityTag").setInteger("heat", this.getHeat());
cookCounter = 0; cookCounter = 0;
//dropList.set(0, recipe.getDropsCooked()); System.out.println("Cooked");
this.updateBlock(); this.updateBlock();
this.markDirty(); this.markDirty();
} }
if (this.getSlotStack(1).isEmpty()) { if (this.getSlotStack(1).isEmpty()) {
this.cookCounter = 0; this.cookCounter = 0;
} }
System.out.println(recipe.getCookTemp());
System.out.println(recipe.getCookTime());
System.out.println(recipe.getCoolTime());
System.out.println(recipe.getDropsCooked());
System.out.println(recipe.getDropsRaw());
} }
} }
//} //}

View File

@@ -73,7 +73,9 @@ public class TileNBTCrucible extends BaseTile implements ITickable {
} }
private void coolManager() { private void coolManager() {
System.out.println(this.getHeat() + " " + this.getStatus() + " " + this.getDrops());
if(this.getHot()){ if(this.getHot()){
System.out.println("Still Hot");
if(this.getHeat() > 0){ if(this.getHeat() > 0){
this.setHeat( this.getHeat() - 1); this.setHeat( this.getHeat() - 1);
System.out.println(this.getHeat()); System.out.println(this.getHeat());
@@ -82,6 +84,7 @@ public class TileNBTCrucible extends BaseTile implements ITickable {
this.setHot(false); this.setHot(false);
CrucibleCrafting recipe = CrucibleCrafting.getRecipe(ingList.get(0), ingList.get(1), ingList.get(2), ingList.get(3), ingList.get(4)); CrucibleCrafting recipe = CrucibleCrafting.getRecipe(ingList.get(0), ingList.get(1), ingList.get(2), ingList.get(3), ingList.get(4));
this.setDrops(recipe.getDropsCooked()); this.setDrops(recipe.getDropsCooked());
System.out.println("Ready to harvest: " + this.getDrops());
} }
//CrucibleCrafting recipe = CrucibleCrafting.getRecipe(ingList.get(0), ingList.get(1), ingList.get(2), ingList.get(3), ingList.get(4)); //CrucibleCrafting recipe = CrucibleCrafting.getRecipe(ingList.get(0), ingList.get(1), ingList.get(2), ingList.get(3), ingList.get(4));
} }