Merge remote-tracking branch 'origin/1.10' into 1.10

# Conflicts resolved:
#	src/main/java/com/zixiken/dimdoors/blocks/BlockDimDoorBase.java
This commit is contained in:
Mathijs Riezebos 2017-01-13 09:40:16 +01:00
commit 70535a50d5
6 changed files with 85 additions and 21 deletions

View file

@ -163,9 +163,10 @@ public abstract class BlockDimDoorBase extends BlockDoor implements IDimDoor, IT
world.setBlockToAir(pos2);
} else {
((DDTileEntityBase) world.getTileEntity(pos)).writeToNBT(origRiftTag);
}
super.breakBlock(world, pos, state);
ModBlocks.blockRift.tryPlacingRift(world, pos2); //@todo, this seems to not happen?
world.setBlockState(pos2, ModBlocks.blockRift.getDefaultState());
DDTileEntityBase newRift = (DDTileEntityBase) world.getTileEntity(pos2);
newRift.readFromNBT(origRiftTag);
}

View file

@ -8,6 +8,7 @@ import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
@ -19,6 +20,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.world.Explosion;
@ -33,7 +35,7 @@ import javax.annotation.Nullable;
public class BlockDimWall extends Block {
public static final String ID = "blockDimWall";
public static final PropertyInteger TYPE = PropertyInteger.create("type", 0, 2);
public static final PropertyEnum<BlockDimWall.EnumType> TYPE = PropertyEnum.<BlockDimWall.EnumType>create("type", BlockDimWall.EnumType.class);
private static final float SUPER_HIGH_HARDNESS = 10000000000000F;
private static final float SUPER_EXPLOSION_RESISTANCE = 18000000F;
@ -45,30 +47,22 @@ public class BlockDimWall extends Block {
setHardness(0.1F);
setUnlocalizedName(ID);
setRegistryName(ID);
setDefaultState(blockState.getBaseState().withProperty(TYPE, 0));
setDefaultState(blockState.getBaseState().withProperty(TYPE, EnumType.FABRIC));
setSoundType(SoundType.STONE);
}
@Override
public IBlockState getStateFromMeta(int meta) {
if (meta >= 0 && meta <= 2) {
return getDefaultState().withProperty(TYPE, meta);
return getDefaultState().withProperty(TYPE, EnumType.values()[meta]);
} else {
return getDefaultState();
}
}
@Override
public boolean isReplaceable(IBlockAccess world, BlockPos pos) {
if (world.getBlockState(pos).getValue(TYPE) == 1) {
return false;
}
return true;
}
@Override
public int getMetaFromState(IBlockState state) {
return state.getValue(TYPE);
return state.getValue(TYPE).ordinal();
}
@Override
@ -78,7 +72,7 @@ public class BlockDimWall extends Block {
@Override
public float getBlockHardness(IBlockState state, World world, BlockPos pos) {
if (state.getValue(TYPE) != 1) {
if (!state.getValue(TYPE).equals(EnumType.ANCIENT)) {
return this.blockHardness;
} else {
return SUPER_HIGH_HARDNESS;
@ -87,7 +81,7 @@ public class BlockDimWall extends Block {
@Override
public float getExplosionResistance(World world, BlockPos pos, Entity exploder, Explosion explosion) {
if (world.getBlockState(pos).getValue(TYPE) != 1) {
if (!world.getBlockState(pos).getValue(TYPE).equals(EnumType.ANCIENT)) {
return super.getExplosionResistance(world, pos, exploder, explosion);
} else {
return SUPER_EXPLOSION_RESISTANCE;
@ -96,7 +90,7 @@ public class BlockDimWall extends Block {
@Override
public int damageDropped(IBlockState state) {
int metadata = state.getValue(TYPE);
int metadata = state.getValue(TYPE).ordinal();
//Return 0 to avoid dropping Ancient Fabric even if the player somehow manages to break it
return metadata == 1 ? 0 : metadata;
}
@ -123,4 +117,53 @@ public class BlockDimWall extends Block {
public int quantityDropped(Random par1Random) {
return 0;
}
}
/**
* replaces the block clicked with the held block, instead of placing the
* block on top of it. Shift click to disable.
*/
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, @Nullable ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
//Check if the metadata value is 0 -- we don't want the user to replace Ancient Fabric
if (heldItem != null && !state.getValue(TYPE).equals(EnumType.ANCIENT)) {
Block block = Block.getBlockFromItem(heldItem.getItem());
if (!state.isNormalCube() || block.hasTileEntity(block.getDefaultState())
|| block == this //this also keeps it from being replaced by Ancient Fabric
|| player.isSneaking()) {
return false;
}
if (!world.isRemote) { //@todo on a server, returning false or true determines where the block gets placed?
if (!player.capabilities.isCreativeMode) {
heldItem.stackSize--;
}
world.setBlockState(pos, block.getStateForPlacement(world, pos, side, hitX, hitY, hitZ, 0, player, heldItem)); //choosing getStateForPlacement over getDefaultState, because it will cause directional blocks, like logs to rotate correctly
heldItem.onItemUse(player, world, pos, hand, side, hitX, hitY, hitZ);
}
return true;
}
return false;
}
public static enum EnumType implements IStringSerializable {
FABRIC("fabric"),
ANCIENT("ancient"),
ALTERED("altered");
private final String name;
private EnumType(String name)
{
this.name = name;
}
public String toString()
{
return this.name;
}
public String getName()
{
return this.name;
}
}
}

View file

@ -2,6 +2,7 @@ package com.zixiken.dimdoors.client;
import com.zixiken.dimdoors.DDProxyCommon;
import com.zixiken.dimdoors.tileentities.TileEntityDimDoor;
import com.zixiken.dimdoors.tileentities.TileEntityRift;
import com.zixiken.dimdoors.tileentities.TileEntityTransTrapdoor;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
@ -10,6 +11,7 @@ import net.minecraft.world.World;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
@SuppressWarnings({"MethodCallSideOnly", "NewExpressionSideOnly"})
public class DDProxyClient extends DDProxyCommon {
@Override
@ -21,6 +23,7 @@ public class DDProxyClient extends DDProxyCommon {
public void registerRenderers() {
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDimDoor.class, new RenderDimDoor());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTransTrapdoor.class, new RenderTransTrapdoor());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRift.class, new RenderRift());
}
@Override

View file

@ -24,7 +24,6 @@ import net.minecraft.util.ResourceLocation;
import static org.lwjgl.opengl.GL11.*;
@SideOnly(Side.CLIENT)
public class RenderDimDoor extends TileEntitySpecialRenderer<TileEntityDimDoor> {
private FloatBuffer buffer = GLAllocation.createDirectFloatBuffer(16);

View file

@ -0,0 +1,18 @@
package com.zixiken.dimdoors.client;
import com.zixiken.dimdoors.tileentities.TileEntityRift;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextComponentString;
public class RenderRift extends TileEntitySpecialRenderer<TileEntityRift> {
public void renderTileEntityAt(TileEntityRift te, double x, double y, double z, float partialTicks, int destroyStage) {
ITextComponent itextcomponent = new TextComponentString("Derp");
this.setLightmapDisabled(true);
this.drawNameplate(te, itextcomponent.getFormattedText(), x, y, z, 12);
this.setLightmapDisabled(false);
}
}

View file

@ -1,7 +1,7 @@
{
"variants": {
"type=0": { "model": "dimdoors:blockDimWall" },
"type=1": { "model": "dimdoors:blockDimWallAncient" },
"type=2": { "model": "dimdoors:blockDimWallAltered" }
"type=fabric": { "model": "dimdoors:blockDimWall" },
"type=ancient": { "model": "dimdoors:blockDimWallAncient" },
"type=altered": { "model": "dimdoors:blockDimWallAltered" }
}
}