1.12.2: Added panzer glass. Added rebar concrete tile. Crafting table supports shift-click.

This commit is contained in:
stfwi 2019-03-13 18:29:06 +01:00
parent 064c7684ee
commit c76dd25555
34 changed files with 245 additions and 66 deletions

View file

@ -67,7 +67,8 @@ install: $(MOD_JAR) |
@rm -f "$(SERVER_INSTALL_DIR)/mods/${MOD_JAR_PREFIX}"*.jar
@[ -d "$(SERVER_INSTALL_DIR)/mods" ] && cp -f "$(MOD_JAR)" "$(SERVER_INSTALL_DIR)/mods/"
start-server: install
start-server:
-@make -s install
@echo "[1.12] Starting local dedicated server ..."
@cd "$(SERVER_INSTALL_DIR)" && java -jar forge-1.12.2-14.23.5.2768-universal.jar nogui

View file

@ -3,7 +3,7 @@ org.gradle.daemon=false
org.gradle.jvmargs=-Xmx8G
version_minecraft=1.12.2
version_forge=14.23.5.2768
version_engineersdecor=1.0.1
version_engineersdecor=1.0.2-b1
#
# jar signing data loaded from signing.properties in the project root.
#

View file

@ -1,6 +1,7 @@
{
"homepage": "https://www.curseforge.com/minecraft/mc-mods/engineers-decor/",
"1.12.2": {
"1.0.2-b1": "[A] Added rebar concrete tile.\n[A] Added panzer glass (explosion-resistant reinforced glass).\n[M] Treated wood crafting table supports shift-click to transfer stacks between player inventory and crafting table storage (thanks majijn for the hint).",
"1.0.1": "[R] Release based on v1.0.1-b4 * Treated wood crafting table * Clinker brick wall * Treated wood stool * Inset spot light * Recipe fixes * Logo updated",
"1.0.1-b4": "[M] Crafting table keeps inventory and has eight storage slots.\n[M] Adapted inset light strength and harvest tool.\n[M] Crafting table recipe adapted.",
"1.0.1-b3": "[A] Added inset light (glowstone-metal, light level like torch, can be used as floor/ceiling/wall light).\n[M] Crafting table model updated (issue #7, thanks majijn).\n[M] Logo image updated.",
@ -14,6 +15,6 @@
},
"promos": {
"1.12.2-recommended": "1.0.1",
"1.12.2-latest": "1.0.1"
"1.12.2-latest": "1.0.2-b1"
}
}

View file

@ -10,6 +10,12 @@ Mod sources for Minecraft version 1.12.2.
----
## Revision history
- v1.0.2-b1 [A] Added rebar concrete tile.
[A] Added panzer glass (explosion-resistant reinforced glass).
[M] Treated wood crafting table supports shift-click to transfer
stacks between player inventory and crafting table storage
(thanks majijn for the hint).
-------------------------------------------------------------------
- v1.0.1 [R] Release based on v1.0.1-b4
* Treated wood crafting table

View file

@ -158,10 +158,6 @@ public class BlockDecorCraftingTable extends BlockDecorDirected
renderHoveredToolTip(mouseX, mouseY);
}
@Override
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
{}
@Override
protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY)
{
@ -251,19 +247,18 @@ public class BlockDecorCraftingTable extends BlockDecorDirected
@Override
public ItemStack transferStackInSlot(EntityPlayer playerIn, int index)
{
ItemStack stack = ItemStack.EMPTY;
Slot slot = this.inventorySlots.get(index);
if((slot == null) || (!slot.getHasStack())) return stack;
if((slot == null) || (!slot.getHasStack())) return ItemStack.EMPTY;
ItemStack slotstack = slot.getStack();
stack = slotstack.copy();
ItemStack stack = slotstack.copy();
if(index == 0) {
slotstack.getItem().onCreated(slotstack, this.world, playerIn);
if(!this.mergeItemStack(slotstack, 10, 46, true)) return ItemStack.EMPTY;
slot.onSlotChange(slotstack, stack);
} else if (index >= 10 && (index < 37)) {
if(!this.mergeItemStack(slotstack, 37, 46, false)) return ItemStack.EMPTY;
} else if((index >= 37) && (index < 46)) {
if(!this.mergeItemStack(slotstack, 10, 37, false)) return ItemStack.EMPTY;
} else if(index >= 10 && (index < 46)) {
if(!this.mergeItemStack(slotstack, 46, 54, false)) return ItemStack.EMPTY;
} else if((index >= 46) && (index < 54)) {
if(!this.mergeItemStack(slotstack, 10, 46, false)) return ItemStack.EMPTY;
} else if(!this.mergeItemStack(slotstack, 10, 46, false)) {
return ItemStack.EMPTY;
}
@ -374,18 +369,6 @@ public class BlockDecorCraftingTable extends BlockDecorDirected
public NBTTagCompound writeToNBT(NBTTagCompound compound)
{ super.writeToNBT(compound); writenbt(compound); return compound; }
//@Override
//public NBTTagCompound getUpdateTag()
//{ return writeToNBT(new NBTTagCompound()); }
//@Override
//public SPacketUpdateTileEntity getUpdatePacket()
//{ return new SPacketUpdateTileEntity(getPos(), 0x1, getUpdateTag()); }
//
//@Override
//public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt)
//{ readFromNBT(pkt.getNbtCompound()); super.onDataPacket(net, pkt); }
// IWorldNamable ---------------------------------------------------------------------------
@Override

View file

@ -0,0 +1,84 @@
/*
* @file BlockDecorFull.java
* @author Stefan Wilhelm (wile)
* @copyright (C) 2019 Stefan Wilhelm
* @license MIT (see https://opensource.org/licenses/MIT)
*
* Full block characteristics class.
*/
package wile.engineersdecor.blocks;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.BlockFaceShape;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.world.IBlockAccess;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class BlockDecorGlassBlock extends BlockDecor
{
public BlockDecorGlassBlock(@Nonnull String registryName, long config, @Nullable Material material, float hardness, float resistance, @Nullable SoundType sound)
{
super(registryName, config, material, hardness, resistance, sound);
setLightOpacity(0);
}
@Override
@SideOnly(Side.CLIENT)
public BlockRenderLayer getRenderLayer()
{ return BlockRenderLayer.TRANSLUCENT; }
@Override
@SideOnly(Side.CLIENT)
@SuppressWarnings("deprecation")
public boolean shouldSideBeRendered(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side)
{
final IBlockState neighbourState = world.getBlockState(pos.offset(side));
return ((neighbourState==null) || (!(neighbourState.getBlock() instanceof BlockDecorGlassBlock)));
}
@Override
@SideOnly(Side.CLIENT)
@SuppressWarnings("deprecation")
public float getAmbientOcclusionLightValue(IBlockState state)
{ return 1.0F; }
@Override
public boolean isOpaqueCube(IBlockState state)
{ return false; }
@Override
@SuppressWarnings("deprecation")
public BlockFaceShape getBlockFaceShape(IBlockAccess world, IBlockState state, BlockPos pos, EnumFacing face)
{ return BlockFaceShape.SOLID; }
@Override
@SuppressWarnings("deprecation")
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
{ return FULL_BLOCK_AABB; }
@Override
@Nullable
public AxisAlignedBB getCollisionBoundingBox(IBlockState state, IBlockAccess world, BlockPos pos)
{ return FULL_BLOCK_AABB; }
@Override
@SuppressWarnings("deprecation")
public boolean isFullCube(IBlockState state)
{ return true; }
@Override
@SuppressWarnings("deprecation")
public boolean isNormalCube(IBlockState state)
{ return true; }
}

View file

@ -16,7 +16,6 @@ import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.registry.GameRegistry;
import wile.engineersdecor.ModEngineersDecor;
import wile.engineersdecor.detail.ModAuxiliaries;
@ -38,22 +37,23 @@ public class ModBlocks
{
public static final BlockDecorFull CLINKER_BRICK_BLOCK = new BlockDecorFull("clinker_brick_block", 0, Material.ROCK, 2f, 50f, SoundType.STONE);
public static final BlockDecorStairs CLINKER_BRICK_STAIRS = new BlockDecorStairs("clinker_brick_stairs", CLINKER_BRICK_BLOCK.getDefaultState());
public static final BlockDecorWall CLINKER_BRICK_WALL = new BlockDecorWall("clinker_brick_wall", BlockDecor.CFG_DEFAULT, Material.ROCK, 8f, 50f, SoundType.STONE);
public static final BlockDecorFull SLAG_BRICK_BLOCK = new BlockDecorFull("slag_brick_block", 0, Material.ROCK, 2f, 50f, SoundType.STONE);
public static final BlockDecorStairs SLAG_BRICK_STAIRS = new BlockDecorStairs("slag_brick_stairs", SLAG_BRICK_BLOCK.getDefaultState());
public static final BlockDecorFull IRON_SHEET_ROOF_FULLBLOCK = new BlockDecorFull("iron_sheet_roof_block", 0, Material.IRON, 1.8f, 25f, SoundType.METAL);
public static final BlockDecorFull REBAR_CONCRETE_BLOCK = new BlockDecorFull("rebar_concrete", 0, Material.ROCK, 8f, 2000f, SoundType.STONE);
public static final BlockDecorStairs REBAR_CONCRETE_STAIRS = new BlockDecorStairs("rebar_concrete_stairs", REBAR_CONCRETE_BLOCK.getDefaultState());
public static final BlockDecorWall REBAR_CONCRETE_WALL = new BlockDecorWall("rebar_concrete_wall", BlockDecor.CFG_DEFAULT, Material.ROCK, 8f, 2000f, SoundType.STONE);
public static final BlockDecorFull REBAR_CONCRETE_TILE = new BlockDecorFull("rebar_concrete_tile", 0, Material.ROCK, 8f, 2000f, SoundType.STONE);
public static final BlockDecorWall CONCRETE_WALL = new BlockDecorWall("concrete_wall", BlockDecor.CFG_DEFAULT, Material.ROCK, 8f, 50f, SoundType.STONE);
public static final BlockDecorLadder METAL_RUNG_LADDER = new BlockDecorLadder("metal_rung_ladder", 0, Material.IRON, 1.0f, 25f, SoundType.METAL);
public static final BlockDecorLadder METAL_RUNG_STEPS = new BlockDecorLadder("metal_rung_steps", 0, Material.IRON, 1.0f, 25f, SoundType.METAL);
public static final BlockDecorLadder TREATED_WOOD_LADDER = new BlockDecorLadder("treated_wood_ladder", 0, Material.WOOD, 1.0f, 15f, SoundType.WOOD);
public static final BlockDecorFull REBAR_CONCRETE_BLOCK = new BlockDecorFull("rebar_concrete", 0, Material.ROCK, 8f, 2000f, SoundType.STONE);
public static final BlockDecorStairs REBAR_CONCRETE_STAIRS = new BlockDecorStairs("rebar_concrete_stairs", REBAR_CONCRETE_BLOCK.getDefaultState());
public static final BlockDecorWall REBAR_CONCRETE_WALL = new BlockDecorWall("rebar_concrete_wall", BlockDecor.CFG_DEFAULT, Material.ROCK, 8f, 2000f, SoundType.STONE);
public static final BlockDecorWall CONCRETE_WALL = new BlockDecorWall("concrete_wall", BlockDecor.CFG_DEFAULT, Material.ROCK, 8f, 50f, SoundType.STONE);
public static final BlockDecorWall CLINKER_BRICK_WALL = new BlockDecorWall("clinker_brick_wall", BlockDecor.CFG_DEFAULT, Material.ROCK, 8f, 50f, SoundType.STONE);
public static final BlockDecorGlassBlock PANZERGLASS_BLOCK = new BlockDecorGlassBlock("panzerglass_block", 0, Material.ROCK, 3f, 2000f, SoundType.GLASS);
public static final BlockDecorDirected TREATED_WOOD_POLE = new BlockDecorDirected(
"treated_wood_pole",
@ -88,6 +88,7 @@ public class ModBlocks
ModAuxiliaries.getPixeledAABB(5.2,5.2,15.7, 10.8,10.8,16.0)
);
public static final BlockDecorFull IRON_SHEET_ROOF_FULLBLOCK = new BlockDecorFull("iron_sheet_roof_block", 0, Material.IRON, 1.8f, 25f, SoundType.METAL);
public static final BlockDecorStairs IRON_SHEET_ROOF = new BlockDecorStairs("iron_sheet_roof", IRON_SHEET_ROOF_FULLBLOCK.getDefaultState());
private static final Block modBlocks[] = {
@ -103,13 +104,12 @@ public class ModBlocks
REBAR_CONCRETE_BLOCK,
REBAR_CONCRETE_STAIRS,
REBAR_CONCRETE_WALL,
REBAR_CONCRETE_TILE,
CLINKER_BRICK_WALL,
TREATED_WOOD_STOOL,
TREATED_WOOD_CRAFTING_TABLE,
INSET_LIGHT_IRON,
};
private static final Block ieDependentBlocks[] = {
PANZERGLASS_BLOCK,
CONCRETE_WALL
};
@ -129,10 +129,7 @@ public class ModBlocks
// Config based registry selection
ArrayList<Block> allBlocks = new ArrayList<>();
Collections.addAll(allBlocks, modBlocks);
if(Loader.isModLoaded("immersiveengineering")) {
ModEngineersDecor.logger.info("Immersive Engineering installed, registering dependent blocks...");
Collections.addAll(allBlocks, ieDependentBlocks);
}
//if(Loader.isModLoaded("immersiveengineering")){}
if(ModConfig.zmisc.with_experimental) Collections.addAll(allBlocks, devBlocks);
for(Block e:allBlocks) registeredBlocks.add(e);
for(Block e:registeredBlocks) event.getRegistry().register(e);

View file

@ -0,0 +1,19 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:glass/panzerglass_block_model",
"textures": { "all": "engineersdecor:blocks/glass/panzerglass_block_texture0" }
},
"variants": {
"normal": [
{ "textures": { "all": "engineersdecor:blocks/glass/panzerglass_block_texture0" } },
{ "textures": { "all": "engineersdecor:blocks/glass/panzerglass_block_texture1" } },
{ "textures": { "all": "engineersdecor:blocks/glass/panzerglass_block_texture2" } },
{ "textures": { "all": "engineersdecor:blocks/glass/panzerglass_block_texture3" } }
],
"inventory": {
"model": "engineersdecor:glass/panzerglass_block_model",
"textures": { "all": "engineersdecor:blocks/glass/panzerglass_block_texture_inventory" }
}
}
}

View file

@ -0,0 +1,20 @@
{
"forge_marker": 1,
"defaults": {
"model": "engineersdecor:decor_full_block_model",
"textures": { "all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture0" }
},
"variants": {
"normal": [
{ "textures": { "all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture0" } },
{ "textures": { "all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture1" } },
{ "textures": { "all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture2" } },
{ "textures": { "all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture3" } },
{ "textures": { "all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture4" } },
{ "textures": { "all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture5" } },
{ "textures": { "all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture6" } },
{ "textures": { "all": "engineersdecor:blocks/concrete/rebar_concrete_tile_texture7" } }
],
"inventory": [{}]
}
}

View file

@ -18,15 +18,17 @@ tile.engineersdecor.slag_brick_block.name=Slag brick
tile.engineersdecor.slag_brick_block.help=§6A gray-brown brick block with position dependent texture variations.
tile.engineersdecor.rebar_concrete.name=Rebar concrete
tile.engineersdecor.rebar_concrete.help=§6Steel reinforced concrete block.§r Expensive but Creeper-proof like obsidian.
tile.engineersdecor.panzerglass_block.name=Panzer glass
tile.engineersdecor.panzerglass_block.help=§6Reinforced glass block.§r Expensive, explosion-proof. Dark gray tint, faint structural lines visible, multi texture for seemless look.
tile.engineersdecor.rebar_concrete_tile.name=Rebar concrete tile
tile.engineersdecor.rebar_concrete_tile.help=§6Steel reinforced concrete tile.§r Expensive but Creeper-proof like obsidian.
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.rebar_concrete_wall.name=Rebar concrete wall
tile.engineersdecor.rebar_concrete_wall.help=§6Steel reinforced concrete wall.§r Expensive but Creeper-proof like obsidian.
tile.engineersdecor.concrete_wall.name=Concrete wall
tile.engineersdecor.concrete_wall.help=§6Wall made of solid concrete.
tile.engineersdecor.clinker_brick_wall.name=Clinker brick wall
tile.engineersdecor.clinker_brick_wall.help=§6Simplistic clinker brick wall.
#-----------------------------------------------------------------------------------------------------------
# Ladder blocks
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.metal_rung_ladder.name=Metal rung ladder
tile.engineersdecor.metal_rung_ladder.help=§6Typical industrial wall ladder, consisting of horizontal metal rod rungs.
@ -34,9 +36,6 @@ tile.engineersdecor.metal_rung_steps.name=Staggered metal steps
tile.engineersdecor.metal_rung_steps.help=§6Staggered rod rungs affixed to a wall, allowing to climb up, fall down, and so on.
tile.engineersdecor.treated_wood_ladder.name=Treated wood ladder
tile.engineersdecor.treated_wood_ladder.help=§6Weather-proof wooden ladder.
#-----------------------------------------------------------------------------------------------------------
# Stairs and roofs
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.clinker_brick_stairs.name=Clinker brick stairs
tile.engineersdecor.clinker_brick_stairs.help=§6Looks slightly darker and more color intensive than the vanilla brick block.
@ -44,20 +43,11 @@ tile.engineersdecor.slag_brick_stairs.name=Clinker brick stairs
tile.engineersdecor.slag_brick_stairs.help=§6Looks slightly darker and more color intensive than the vanilla brick block.
tile.engineersdecor.rebar_concrete_stairs.name=Rebar concrete stairs
tile.engineersdecor.rebar_concrete_stairs.help=§6Steel reinforced concrete stairs.§r Expensive but Creeper-proof like obsidian.
tile.engineersdecor.iron_sheet_roof.name=Iron sheet metal roof
tile.engineersdecor.iron_sheet_roof.help=§6Well, it's a roof.
#-----------------------------------------------------------------------------------------------------------
# Poles and supports
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.treated_wood_pole.name=Straight treated wood pole
tile.engineersdecor.treated_wood_pole.help=§6Straight pole fragment with the diameter of a wire relay.§r\n\
Can be useful as alternative to the wire posts if special special lengths are needed, \
or as support for structures.
#-----------------------------------------------------------------------------------------------------------
# Furniture
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.treated_wood_table.name=Treated wood table
tile.engineersdecor.treated_wood_table.help=§6Robust four-legged wood table.§r Indoor and outdoor use.
@ -69,6 +59,9 @@ tile.engineersdecor.iron_inset_light.name=Inset light
tile.engineersdecor.iron_inset_light.help=§6Small glowstone light source, sunk into the floor, ceiling or wall.§r\n\
Useful to light up places where electrical light installations are problematic.\
Light level like a torch.
#-----------------------------------------------------------------------------------------------------------
tile.engineersdecor.iron_sheet_roof.name=Iron sheet metal roof
tile.engineersdecor.iron_sheet_roof.help=§6Well, it's a roof.
#-----------------------------------------------------------------------------------------------------------
# EOF
#-----------------------------------------------------------------------------------------------------------

View file

@ -0,0 +1 @@
{ "parent": "block/cube_all", "textures": { "all": "engineersdecor:blocks/glass/panzerglass_block_texture0" } }

View file

@ -184,7 +184,20 @@
},
"name": "paneGlass"
},
{
"ingredient": {
"type": "forge:ore_dict",
"ore": "blockGlass"
},
"name": "blockGlass"
},
{
"ingredient": {
"item": "minecraft:diamond",
"data": 0
},
"name": "itemDiamond"
},
{
"ingredient": {
"item": "minecraft:crafting_table",
@ -192,7 +205,6 @@
},
"name": "itemCraftingTable"
},
{
"ingredient": [
{

View file

@ -0,0 +1,33 @@
{
"conditions": [
{
"type": "engineersdecor:grc",
"result": "engineersdecor:panzerglass_block",
"required": ["immersiveengineering:stone_decoration"]
}
],
"type": "minecraft:crafting_shaped",
"pattern": [
"SGS",
"GDG",
"SGS"
],
"key": {
"G": {
"item": "#blockGlass",
"data": 0
},
"S": {
"item": "#stickSteel",
"data": 0
},
"D": {
"item": "#itemDiamond",
"data": 0
}
},
"result": {
"item": "engineersdecor:panzerglass_block",
"count": 8
}
}

View file

@ -0,0 +1,23 @@
{
"conditions": [
{
"type": "engineersdecor:grc",
"result": "engineersdecor:rebar_concrete_tile"
}
],
"type": "minecraft:crafting_shaped",
"pattern": [
"CC",
"CC"
],
"key": {
"C": {
"item": "engineersdecor:rebar_concrete",
"data": 0
}
},
"result": {
"item": "engineersdecor:rebar_concrete_tile",
"count": 4
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 658 B

View file

@ -26,9 +26,9 @@ tasks["dist-check"] = function() {
if(git_remote.replace(/[\s]/g,"").indexOf("git@github.com:stfwi/engineers-decor.git(push)") < 0) fails.push("Not the reference repository.");
if((git_branch != "develop") && (git_branch != "master")) {
fails.push("No valid branch for dist. (branch:'"+git_branch+"')");
} else if((git_branch == "develop") && (version_engineersdecor.replace(/[^\w\.-]/g,"")=="")) {
} else if((git_branch == "develop") && (version_engineersdecor.replace(/[^ab\.-]/g,"")=="")) {
fails.push("Cannot make release dist on develop branch.");
} else if((git_branch == "master") && (version_engineersdecor.replace(/[^\w\.-]/g,"")!="")) {
} else if((git_branch == "master") && (version_engineersdecor.replace(/[^ab\.-]/g,"")!="")) {
fails.push("Cannot make beta dist on master branch.");
}
if(git_diff !== "") fails.push("Not everything committed to the GIT repository.");