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:
commit
70535a50d5
6 changed files with 85 additions and 21 deletions
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
18
src/main/java/com/zixiken/dimdoors/client/RenderRift.java
Normal file
18
src/main/java/com/zixiken/dimdoors/client/RenderRift.java
Normal 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);
|
||||
}
|
||||
}
|
|
@ -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" }
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue