Update to latest commit(Master)

This commit is contained in:
Dimmerworld 2017-10-05 02:38:11 +11:00 committed by drcrazy
parent c8b6edd390
commit c651363b73
12 changed files with 174 additions and 135 deletions

View file

@ -22,17 +22,19 @@
* SOFTWARE.
*/
package techreborn.blocks.generator;
package techreborn.blocks.generator.solarpanel;
import net.minecraft.block.Block;
import java.util.List;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World;
import prospector.shootingstar.ShootingStar;
import prospector.shootingstar.model.ModelCompound;
@ -45,30 +47,36 @@ import techreborn.tiles.generator.TileSolarPanel;
* Created by modmuss50 on 25/02/2016.
*/
public class BlockSolarPanel extends BaseTileBlock {
public static PropertyBool ACTIVE = PropertyBool.create("active");
public static final String[] panes = new String[] {
"basic", "hybrid", "advanced", "ultimate", "quantum"};
public static final PropertyEnum TYPE = PropertyEnum.create("type", EnumPanelType.class);
public BlockSolarPanel() {
super(Material.IRON);
setCreativeTab(TechRebornCreativeTab.instance);
this.setDefaultState(this.getDefaultState().withProperty(ACTIVE, false));
this.setDefaultState(this.getBlockState().getBaseState().withProperty(TYPE, EnumPanelType.Basic));
setHardness(2.0F);
ShootingStar.registerModel(new ModelCompound(ModInfo.MOD_ID, this, "machines/generators"));
this.setDefaultState(this.getStateFromMeta(0));
for (int i = 0; i < panes.length; i++) {
ShootingStar.registerModel(new ModelCompound(ModInfo.MOD_ID, this, i).setInvVariant("type=" + panes[i]).setFileName("ores"));
}
}
protected BlockStateContainer createBlockState() {
ACTIVE = PropertyBool.create("active");
return new BlockStateContainer(this, ACTIVE);
return new BlockStateContainer(this, new IProperty[]{TYPE});
}
@Override
public IBlockState getStateFromMeta(int meta) {
return getDefaultState().withProperty(ACTIVE, meta != 0);
return getDefaultState().withProperty(TYPE, EnumPanelType.values()[meta]);
}
@Override
public int getMetaFromState(IBlockState state) {
return state.getValue(ACTIVE) ? 1 : 0;
EnumPanelType type = (EnumPanelType) state.getValue(TYPE);
return type.getID();
}
@Override
@ -77,31 +85,9 @@ public class BlockSolarPanel extends BaseTileBlock {
}
@Override
public void neighborChanged(IBlockState state, World worldIn, BlockPos pos, Block neighborBlock, BlockPos p_189540_5_) {
if (worldIn.canBlockSeeSky(pos.up()) && !worldIn.isRaining() && !worldIn.isThundering()
&& worldIn.isDaytime()) {
worldIn.setBlockState(pos,
worldIn.getBlockState(pos).withProperty(BlockSolarPanel.ACTIVE, true));
} else {
worldIn.setBlockState(pos,
worldIn.getBlockState(pos).withProperty(BlockSolarPanel.ACTIVE, false));
public void getSubBlocks(CreativeTabs tab, NonNullList<ItemStack> list) {
for (EnumPanelType panelType : EnumPanelType.values()) {
list.add(new ItemStack(this, 1, panelType.ordinal()));
}
}
@Override
public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY,
float hitZ, int meta, EntityLivingBase placer) {
if (!worldIn.isRemote) {
if (worldIn.canBlockSeeSky(pos.up()) && !worldIn.isRaining() && !worldIn.isThundering() && worldIn.isDaytime()) {
return this.getDefaultState().withProperty(ACTIVE, true);
} else {
return this.getDefaultState().withProperty(ACTIVE, false);
}
} else {
return this.getDefaultState().withProperty(ACTIVE, false);
}
}
}

View file

@ -0,0 +1,34 @@
package techreborn.blocks.generator.solarpanel;
import net.minecraft.util.IStringSerializable;
import reborncore.api.power.EnumPowerTier;
public enum EnumPanelType implements IStringSerializable {
Basic("basic", 128, EnumPowerTier.LOW, 0),
Hybrid("hybrid", 32, EnumPowerTier.MEDIUM, 1),
Advanced("advanced", 512, EnumPowerTier.MEDIUM, 2),
Ultimate("ultimate", 2048, EnumPowerTier.HIGH, 3),
Quantum("quantum", 2048, EnumPowerTier.EXTREME, 4);
private int ID;
public int generationRate = 128;
private String friendlyName;
EnumPanelType(String friendlyName, int generationRate, EnumPowerTier tier, int ID) {
this.friendlyName = friendlyName;
this.generationRate = generationRate;
this.ID = ID;
}
@Override
public String getName() {
return friendlyName.toLowerCase();
}
public int getID(){
return ID;
}
}

View file

@ -40,6 +40,7 @@ import techreborn.blocks.*;
import techreborn.blocks.advanced_machine.*;
import techreborn.blocks.cable.BlockCable;
import techreborn.blocks.generator.*;
import techreborn.blocks.generator.solarpanel.BlockSolarPanel;
import techreborn.blocks.iron_machines.BlockIronAlloyFurnace;
import techreborn.blocks.iron_machines.BlockIronFurnace;
import techreborn.blocks.machine.*;
@ -328,7 +329,7 @@ public class ModBlocks {
GameRegistry.registerTileEntity(TileElectricFurnace.class, "TileElectricFurnaceTR");
SOLAR_PANEL = new BlockSolarPanel();
registerBlock(SOLAR_PANEL, "solar_panel");
registerBlock(SOLAR_PANEL, ItemBlockSolarPanel.class, "solar_panel");
GameRegistry.registerTileEntity(TileSolarPanel.class, "TileSolarPanelTR");
CREATIVE_SOLAR_PANEL = new BlockCreativeSolarPanel();

View file

@ -0,0 +1,18 @@
package techreborn.itemblocks;
import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import techreborn.blocks.generator.solarpanel.EnumPanelType;
public class ItemBlockSolarPanel extends ItemBlock {
public ItemBlockSolarPanel(Block block) {
super(block);
setHasSubtypes(true);
}
public String getUnlocalizedName(ItemStack stack) {
return super.getUnlocalizedName() + "." + EnumPanelType.values()[stack.getItemDamage()].getName();
}
}

View file

@ -39,10 +39,8 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler;
import reborncore.api.recipe.IRecipeCrafterProvider;
import reborncore.api.tile.IUpgrade;
import reborncore.common.powerSystem.TilePowerAcceptor;
import reborncore.common.recipes.IUpgradeHandler;
import reborncore.common.recipes.RecipeCrafter;
import reborncore.common.tile.IMachineSlotProvider;
import reborncore.common.tile.TileLegacyMachineBase;
@ -123,20 +121,21 @@ public class ItemUpgrades extends ItemTR implements IUpgrade {
@Nonnull
TileLegacyMachineBase machineBase,
@Nullable
IUpgradeHandler handler,
RecipeCrafter crafter,
@Nonnull
ItemStack stack) {
if (stack.getItemDamage() == 0) {
handler.addSpeedMulti(0.25);
handler.addPowerMulti(0.5);
if (crafter != null) {
crafter.addSpeedMulti(0.25);
crafter.addPowerMulti(0.5);
}
} else if (stack.getItemDamage() == 4) {
EnumFacing dir = getFacing(stack);
TileEntity tileEntity = machineBase.getWorld().getTileEntity(machineBase.getPos().offset(dir));
if (tileEntity instanceof IInventory) {
if (machineBase instanceof IRecipeCrafterProvider) {
RecipeCrafter crafter = ((IRecipeCrafterProvider) machineBase).getRecipeCrafter();
if (crafter != null) {
for (Integer outSlot : crafter.outputSlots) {
ItemStack outputStack = crafter.inventory.getStackInSlot(outSlot);
if (!outputStack.isEmpty()) {
@ -182,14 +181,16 @@ public class ItemUpgrades extends ItemTR implements IUpgrade {
if (tileEntity != null && tileEntity.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, dir.getOpposite())) {
IItemHandler itemHandler = tileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, dir.getOpposite());
for (int i = 0; i < itemHandler.getSlots(); i++) {
ItemStack extractedStack = itemHandler.extractItem(i, 1, true);
int amount = InventoryHelper.testInventoryInsertion(machineBase, extractedStack, null);
if (amount > 0) {
extractedStack = itemHandler.extractItem(i, 1, false);
extractedStack.setCount(1);
InventoryHelper.insertItemIntoInventory(machineBase, extractedStack);
ItemStack stack1 = itemHandler.getStackInSlot(i);
if (crafter == null || crafter.isStackValidInput(stack1)) {
ItemStack extractedStack = itemHandler.extractItem(i, 1, true);
int amount = InventoryHelper.testInventoryInsertion(machineBase, extractedStack, null);
if (amount > 0) {
extractedStack = itemHandler.extractItem(i, 1, false);
extractedStack.setCount(1);
InventoryHelper.insertItemIntoInventory(machineBase, extractedStack);
}
}
}
}

View file

@ -51,6 +51,8 @@ public class PacketSetRecipe implements INetworkPacket<PacketSetRecipe> {
} else {
this.recipe = recipe.getRegistryName();
}
System.out.println(this.recipe);
this.custom = custom;
}
@ -74,6 +76,7 @@ public class PacketSetRecipe implements INetworkPacket<PacketSetRecipe> {
@Override
public void processData(PacketSetRecipe message, MessageContext context) {
TileEntity tileEntity = context.getServerHandler().player.world.getTileEntity(message.pos);
;
if (tileEntity instanceof TileAutoCraftingTable) {
((TileAutoCraftingTable) tileEntity).setCurrentRecipe(message.recipe, message.custom);
}

View file

@ -59,7 +59,7 @@ public class TileAutoCraftingTable extends TilePowerAcceptor implements IContain
ResourceLocation currentRecipe;
public Inventory inventory = new Inventory(11, "TileAutoCraftingTable", 64, this);
public Inventory inventory = new Inventory(10, "TileAutoCraftingTable", 64, this);
public int progress;
public int maxProgress = 120;
public int euTick = 10;
@ -172,16 +172,8 @@ public class TileAutoCraftingTable extends TilePowerAcceptor implements IContain
for (int i = 0; i < 9; i++) {
ItemStack stack = inventory.getStackInSlot(i);
int requiredSize = customRecipe ? 1 : 0;
if(stack.getMaxStackSize() == 1){
requiredSize = 0;
}
if (stacksInSlots[i] > requiredSize) {
if (ingredient.apply(stack)) {
if(stack.getItem().getContainerItem() != null){
if(!hasRoomForExtraItem(stack.getItem().getContainerItem(stack))){
continue;
}
}
foundIngredient = true;
stacksInSlots[i]--;
break;
@ -194,7 +186,7 @@ public class TileAutoCraftingTable extends TilePowerAcceptor implements IContain
}
}
if (!missingOutput) {
if (hasOutputSpace(recipe.getRecipeOutput(), 9)) {
if (hasOutputSpace(recipe.getRecipeOutput())) {
return true;
}
}
@ -203,17 +195,8 @@ public class TileAutoCraftingTable extends TilePowerAcceptor implements IContain
return false;
}
boolean hasRoomForExtraItem(ItemStack stack){
ItemStack extraOutputSlot = getStackInSlot(10);
if(extraOutputSlot.isEmpty()){
return true;
}
return hasOutputSpace(stack, 10);
}
public boolean hasOutputSpace(ItemStack output, int slot) {
ItemStack stack = inventory.getStackInSlot(slot);
public boolean hasOutputSpace(ItemStack output) {
ItemStack stack = inventory.getStackInSlot(9);
if (stack.isEmpty()) {
return true;
}
@ -238,14 +221,13 @@ public class TileAutoCraftingTable extends TilePowerAcceptor implements IContain
//Looks for the best slot to take it from
ItemStack bestSlot = inventory.getStackInSlot(i);
if (ingredient.apply(bestSlot)) {
handleContainerItem(bestSlot);
bestSlot.shrink(1);
} else {
for (int j = 0; j < 9; j++) {
ItemStack stack = inventory.getStackInSlot(j);
if (ingredient.apply(stack)) {
handleContainerItem(stack);
stack.shrink(1); //TODO is this right? or do I need to use it as an actull crafting grid
//TOOD check items to be retuned
break;
}
}
@ -265,21 +247,6 @@ public class TileAutoCraftingTable extends TilePowerAcceptor implements IContain
return false;
}
private void handleContainerItem(ItemStack stack){
if(stack.getItem().hasContainerItem(stack)){
ItemStack containerItem = stack.getItem().getContainerItem(stack);
ItemStack extraOutputSlot = getStackInSlot(10);
if(hasOutputSpace(containerItem, 10)){
if(extraOutputSlot.isEmpty()){
setInventorySlotContents(10, containerItem.copy());
} else if(ItemUtils.isItemEqual(extraOutputSlot, containerItem, true, true) && extraOutputSlot.getMaxStackSize() < extraOutputSlot.getCount() + containerItem.getCount()) {
extraOutputSlot.grow(1);
}
}
}
}
public boolean hasIngredient(Ingredient ingredient) {
for (int i = 0; i < 9; i++) {
ItemStack stack = inventory.getStackInSlot(i);
@ -326,7 +293,7 @@ public class TileAutoCraftingTable extends TilePowerAcceptor implements IContain
.slot(0, 28, 25).slot(1, 46, 25).slot(2, 64, 25)
.slot(3, 28, 43).slot(4, 46, 43).slot(5, 64, 43)
.slot(6, 28, 61).slot(7, 46, 61).slot(8, 64, 61)
.outputSlot(9, 145, 42).outputSlot(10, 145, 70).syncEnergyValue()
.outputSlot(9, 145, 42).syncEnergyValue()
.syncIntegerValue(this::getProgress, this::setProgress)
.syncIntegerValue(this::getMaxProgress, this::setMaxProgress)
.addInventory().create(this);
@ -450,11 +417,11 @@ public class TileAutoCraftingTable extends TilePowerAcceptor implements IContain
@Override
public int[] getSlotsForFace(EnumFacing side) {
return new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
return new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
}
@Override
public boolean canExtractItem(int index, ItemStack stack, EnumFacing direction) {
return index == 9 || index == 10;
return index == 9;
}
}

View file

@ -31,7 +31,7 @@ import reborncore.api.IToolDrop;
import reborncore.common.powerSystem.TilePowerAcceptor;
import reborncore.common.registration.RebornRegistry;
import reborncore.common.registration.impl.ConfigRegistry;
import techreborn.blocks.generator.BlockSolarPanel;
import techreborn.blocks.generator.solarpanel.BlockSolarPanel;
import techreborn.init.ModBlocks;
import techreborn.lib.ModInfo;
@ -75,8 +75,6 @@ public class TileSolarPanel extends TilePowerAcceptor implements IToolDrop {
this.powerToAdd = 0;
}
this.world.setBlockState(this.getPos(),
this.world.getBlockState(this.getPos()).withProperty(BlockSolarPanel.ACTIVE, this.isSunOut()));
}
}

View file

@ -30,8 +30,8 @@ import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraft.util.EnumFacing;
import reborncore.api.IToolDrop;
import reborncore.api.tile.IInventoryProvider;
import reborncore.api.IToolDrop;
import reborncore.common.blocks.BlockMachineBase;
import reborncore.common.powerSystem.TilePowerAcceptor;
import reborncore.common.tile.IMachineSlotProvider;
@ -74,9 +74,9 @@ public class TileElectricFurnace extends TilePowerAcceptor
this.progress++;
if (this.progress % 10 == 0) {
this.useEnergy(getEuPerTick(this.cost));
this.useEnergy(this.cost);
}
if (this.progress >= Math.max((int) (fuelScale * (1.0 - getSpeedMultiplier())), 1)) {
if (this.progress >= this.fuelScale) {
this.progress = 0;
this.cookItems();
updateInventory = true;
@ -127,7 +127,7 @@ public class TileElectricFurnace extends TilePowerAcceptor
}
public boolean isBurning() {
return this.getEnergy() > getEuPerTick(this.cost);
return this.getEnergy() > this.cost;
}
public ItemStack getResultFor(final ItemStack stack) {
@ -245,6 +245,6 @@ public class TileElectricFurnace extends TilePowerAcceptor
@Override
public boolean canBeUpgraded() {
return true;
return false;
}
}

View file

@ -1,34 +1,60 @@
{
"forge_marker": 1,
"defaults": {
"transform": "forge:default-block",
"model": "cube_bottom_top",
"textures": {
"particle": "techreborn:blocks/machines/generators/solar_panel_side_off",
"top": "techreborn:blocks/machines/generators/solar_panel_top",
"down": "techreborn:blocks/machines/generators/generator_bottom"
}
},
"variants": {
"inventory": {
"transform": "forge:default-block",
"model": "cube_bottom_top",
"textures": {
"side": "techreborn:blocks/machines/generators/solar_panel_side_off"
}
},
"active": {
"true": {
"textures": {
"side": "techreborn:blocks/machines/generators/solar_panel_side_on"
}
},
"false": {
"textures": {
"side": "techreborn:blocks/machines/generators/solar_panel_side_off"
}
}
}
}
}
"forge_marker": 1,
"defaults": {
"textures": {},
"transform": "forge:default-block",
"model": "cube_bottom_top"
},
"variants": {
"inventory": {
"transform": "forge:default-block",
"model": "cube_bottom_top",
"textures": {
"side": "techreborn:blocks/machines/generators/solar_panel_side_off"
}
},
"type": {
"basic": {
"textures": {
"particle": "techreborn:blocks/machines/generators/solar_panel_side_off",
"top": "techreborn:blocks/machines/generators/solar_panel_top",
"down": "techreborn:blocks/machines/generators/generator_bottom",
"side": "techreborn:blocks/machines/generators/solar_panel_side_off"
}
},
"hybrid": {
"textures": {
"particle": "techreborn:blocks/machines/generators/solar_panel_side_off",
"top": "techreborn:blocks/machines/generators/solar_panel_top",
"down": "techreborn:blocks/machines/generators/generator_bottom",
"side": "techreborn:blocks/machines/generators/solar_panel_side_off"
}
},
"advanced": {
"textures": {
"particle": "techreborn:blocks/machines/generators/solar_panel_side_off",
"top": "techreborn:blocks/machines/generators/solar_panel_top",
"down": "techreborn:blocks/machines/generators/generator_bottom",
"side": "techreborn:blocks/machines/generators/solar_panel_side_off"
}
},
"ultimate": {
"textures": {
"particle": "techreborn:blocks/machines/generators/solar_panel_side_off",
"top": "techreborn:blocks/machines/generators/solar_panel_top",
"down": "techreborn:blocks/machines/generators/generator_bottom",
"side": "techreborn:blocks/machines/generators/solar_panel_side_off"
}
},
"quantum": {
"textures": {
"particle": "techreborn:blocks/machines/generators/solar_panel_side_off",
"top": "techreborn:blocks/machines/generators/solar_panel_top",
"down": "techreborn:blocks/machines/generators/generator_bottom",
"side": "techreborn:blocks/machines/generators/solar_panel_side_off"
}
}
}
}
}

View file

@ -59,7 +59,12 @@ tile.techreborn:machine_frame.advanced.name=Advanced Machine Frame
tile.techreborn:machine_frame.basic.name=Basic Machine Frame
tile.techreborn:ore2.copper.name=Copper Ore
tile.techreborn:ore2.tin.name=Tin Ore
tile.techreborn:solar_panel.name=Solar Panel
tile.techreborn:solar_panel.basic.name=Basic Solar Panel
tile.techreborn:solar_panel.hybrid.name=Hybrid Solar Panel
tile.techreborn:solar_panel.advanced.name=Advanced Solar Panel
tile.techreborn:solar_panel.ultimate.name=Ultimate Solar Panel
tile.techreborn:solar_panel.quantum.name=Quantum Solar Panel
tile.techreborn:creative_solar_panel.name=Creative Panel
tile.techreborn:water_mill.name=Water Mill
tile.techreborn:wind_mill.name=Wind Mill