Jump to content

Recommended Posts

Posted

good days i been trying to make a custome door fro 3x3

soo this must have two block properties Facing and Open

but this two poperties dont seem to get along went  set on same block

 

it dont crash just stuck the game in the load process

"Loading - Initializing mods Phase 1"

whith error in th console

 

 

java.lang.IllegalArgumentException: Cannot set property PropertyBool{name=open, clazz=class java.lang.Boolean, values=[true, false]} as it does not exist in BlockState{block=modmercenario:puerta3x3t00, properties=[facing]}

at net.minecraft.block.state.BlockState$StateImplementation.withProperty(Unknown Source) ~[forgeSrc-1.8-11.14.3.1520.jar:?]

 

the intersting part is i alredy have declare the two properties facing and opent in the constructor of the block, i doo this from what i see inside the  vainilla doors and seems not to work as i think its works 

 

 

 
[Console output redirected to file:/home/usuario/eclipseOutput.txt]
Picked up _JAVA_OPTIONS: -Xmx2g
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
[15:52:41] [main/INFO] [GradleStart]: Extra: []
[15:52:41] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, /home/usuario/.gradle/caches/minecraft/assets, --assetIndex, 1.8, --accessToken{REDACTED}, --version, 1.8, --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker]
[15:52:41] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[15:52:41] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[15:52:41] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker
[15:52:41] [main/INFO] [FML]: Forge Mod Loader version 11.14.3.1520 for Minecraft 1.8 loading
[15:52:41] [main/INFO] [FML]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_65, running on Linux:amd64:3.16.0-4-amd64, installed at /opt/jdk1.8.0_65/jre
[15:52:41] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
[15:52:41] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[15:52:41] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[15:52:41] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[15:52:41] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[15:52:41] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
[15:52:41] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
[15:52:43] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing
[15:52:43] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
[15:52:43] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[15:52:43] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.TerminalTweaker
[15:52:43] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.TerminalTweaker
[15:52:43] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
[15:52:45] [Client thread/INFO]: Setting user: Player892
[15:52:50] [Client thread/INFO]: LWJGL Version: 2.9.1
[15:52:51] [Client thread/INFO] [sTDOUT]: [net.minecraftforge.fml.client.SplashProgress:start:-1]: ---- Minecraft Crash Report ----
// Don't do that.

Time: 31/01/16 03:52 PM
Description: Loading screen debug info

This is just a prompt for computer specs to be printed. THIS IS NOT A ERROR


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- System Details --
Details:
Minecraft Version: 1.8
Operating System: Linux (amd64) version 3.16.0-4-amd64
Java Version: 1.8.0_65, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 839138408 bytes (800 MB) / 1056309248 bytes (1007 MB) up to 2130051072 bytes (2031 MB)
JVM Flags: 4 total; -Xincgc -Xmx1024M -Xms1024M -Xmx2g
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: 
Loaded coremods (and transformers): 
GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.4.0 NVIDIA 340.93' Renderer: 'GeForce GT 520/PCIe/SSE2'
[15:52:51] [Client thread/INFO] [MinecraftForge]: Attempting early MinecraftForge initialization
[15:52:51] [Client thread/INFO] [FML]: MinecraftForge v11.14.3.1520 Initialized
[15:52:51] [Client thread/INFO] [FML]: Replaced 204 ore recipies
[15:52:52] [Client thread/INFO] [MinecraftForge]: Completed early MinecraftForge initialization
[15:52:52] [Client thread/INFO] [FML]: Found 0 mods from the command line. Injecting into mod discoverer
[15:52:52] [Client thread/INFO] [FML]: Searching /home/usuario/Modding/forge-1.8-1520-modmercenario/run/mods for mods
[15:52:52] [Client thread/INFO] [modmercenario]: Mod modmercenario is missing the required element 'name'. Substituting modmercenario
[15:52:57] [Client thread/INFO] [FML]: Forge Mod Loader has identified 4 mods to load
[15:52:58] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, modmercenario] at CLIENT
[15:52:58] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, modmercenario] at SERVER
[15:52:58] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:modmercenario
[15:52:59] [Client thread/INFO] [FML]: Processing ObjectHolder annotations
[15:52:59] [Client thread/INFO] [FML]: Found 384 ObjectHolder annotations
[15:52:59] [Client thread/INFO] [FML]: Identifying ItemStackHolder annotations
[15:52:59] [Client thread/INFO] [FML]: Found 0 ItemStackHolder annotations
[15:52:59] [Client thread/INFO] [FML]: Configured a dormant chunk cache size of 0
[15:53:02] [Client thread/INFO] [FML]: Applying holder lookups
[15:53:02] [Client thread/INFO] [FML]: Holder lookups applied
[15:53:02] [Client thread/INFO] [FML]: Injecting itemstacks
[15:53:02] [Client thread/INFO] [FML]: Itemstack injection complete
[15:53:02] [Client thread/ERROR] [FML]: Fatal errors were detected during the transition from PREINITIALIZATION to INITIALIZATION. Loading cannot continue
[15:53:02] [Client thread/ERROR] [FML]: 
States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
UCH	mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) 
UCH	FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.8-11.14.3.1520.jar) 
UCH	Forge{11.14.3.1520} [Minecraft Forge] (forgeSrc-1.8-11.14.3.1520.jar) 
UCE	modmercenario{1.8} [modmercenario] (bin) 
[15:53:02] [Client thread/ERROR] [FML]: The following problems were captured during this phase
[15:53:02] [Client thread/ERROR] [FML]: Caught exception from modmercenario
java.lang.IllegalArgumentException: Cannot set property PropertyBool{name=open, clazz=class java.lang.Boolean, values=[true, false]} as it does not exist in BlockState{block=modmercenario:puerta3x3t00, properties=[facing]}
at net.minecraft.block.state.BlockState$StateImplementation.withProperty(Unknown Source) ~[forgeSrc-1.8-11.14.3.1520.jar:?]
at mercenarymod.blocks.multitextura.puertas.puerta3x3t00.<init>(puerta3x3t00.java:65) ~[bin/:?]
at mercenarymod.blocks.MercenaryModBlocks.init(MercenaryModBlocks.java:80) ~[bin/:?]
at mercenarymod.Mercenary.preInit(Mercenary.java:214) ~[bin/:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_65]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_65]
at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(Unknown Source) ~[forgeSrc-1.8-11.14.3.1520.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_65]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_65]
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(Unknown Source) ~[forgeSrc-1.8-11.14.3.1520.jar:?]
at net.minecraftforge.fml.common.LoadController.propogateStateMessage(Unknown Source) ~[forgeSrc-1.8-11.14.3.1520.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_65]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_65]
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
at net.minecraftforge.fml.common.LoadController.distributeStateMessage(Unknown Source) [LoadController.class:?]
at net.minecraftforge.fml.common.Loader.preinitializeMods(Unknown Source) [Loader.class:?]
at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(Unknown Source) [FMLClientHandler.class:?]
at net.minecraft.client.Minecraft.startGame(Unknown Source) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Unknown Source) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Unknown Source) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_65]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_65]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_65]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_65]
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
at GradleStart.main(Unknown Source) [start/:?]
[15:53:02] [Client thread/ERROR] [LaunchWrapper]: Unable to launch
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_65]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_65]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_65]
at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_65]
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
at GradleStart.main(Unknown Source) [start/:?]
Caused by: java.lang.NullPointerException
at net.minecraft.crash.CrashReportCategory.firstTwoElementsOfStackTraceMatch(Unknown Source) ~[CrashReportCategory.class:?]
at net.minecraft.crash.CrashReport.makeCategoryDepth(Unknown Source) ~[CrashReport.class:?]
at net.minecraft.crash.CrashReport.makeCategory(Unknown Source) ~[CrashReport.class:?]
at net.minecraft.client.Minecraft.run(Unknown Source) ~[Minecraft.class:?]
at net.minecraft.client.main.Main.main(Unknown Source) ~[Main.class:?]
... 12 more
Exception in thread "Client thread" [15:53:02] [Client thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: java.lang.reflect.InvocationTargetException
[15:53:02] [Client thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[15:53:02] [Client thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[15:53:02] [Client thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[15:53:02] [Client thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at java.lang.reflect.Method.invoke(Method.java:497)
[15:53:02] [Client thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
[15:53:02] [Client thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at GradleStart.main(Unknown Source)
[15:53:02] [Client thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: Caused by: net.minecraftforge.fml.relauncher.FMLSecurityManager$ExitTrappedException
[15:53:02] [Client thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at net.minecraftforge.fml.relauncher.FMLSecurityManager.checkPermission(Unknown Source)
[15:53:02] [Client thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at java.lang.SecurityManager.checkExit(SecurityManager.java:761)
[15:53:02] [Client thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at java.lang.Runtime.exit(Runtime.java:107)
[15:53:02] [Client thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at java.lang.System.exit(System.java:971)
[15:53:02] [Client thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at net.minecraft.launchwrapper.Launch.launch(Launch.java:138)
[15:53:02] [Client thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
[15:53:02] [Client thread/INFO] [sTDERR]: [java.lang.Throwable$WrappedPrintStream:println:748]: 	... 6 more

 

 

 

this is mi door class  still WIP

 

package mercenarymod.blocks.multitextura.puertas;

import java.util.Random;

import org.apache.logging.log4j.core.config.Property;

import mercenarymod.Mercenary;
import mercenarymod.blocks.MercenaryModBlocks;
import mercenarymod.items.MercenaryModItems;
import net.minecraft.block.Block;
import net.minecraft.block.BlockCauldron;
import net.minecraft.block.BlockDirectional;
import net.minecraft.block.BlockDoor;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityFurnace;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumWorldBlockLayer;
import net.minecraft.util.MathHelper;
import net.minecraft.world.Explosion;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import mercenarymod.utilidades.chat;
import net.minecraft.entity.EntityLivingBase;

public class puerta3x3t00 extends BlockDirectional //Block 
{

public static final PropertyDirection FACING = PropertyDirection.create("facing");
    public static final PropertyBool OPEN = PropertyBool.create("open");
    
    private IBlockState defaultBlockState;

public puerta3x3t00() {
	// super(Material.wood);
	super(Material.wood);
	String name = "puerta3x3t00";
	setUnlocalizedName(Mercenary.MODID + "_" + name);
	GameRegistry.registerBlock(this, name);
	setCreativeTab(Mercenary.herramientas);

	this.setDefaultState(this.blockState.getBaseState().withProperty(OPEN, Boolean.valueOf(false) ).withProperty(FACING, EnumFacing.NORTH)	);

	//this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH) ) ; 
	//this.setDefaultState( this.getDefaultState().withProperty(OPEN, Boolean.valueOf(true)) );

	this.setHardness(6.0F);
	this.setResistance(2.0F);
	// maxStackSize = 64;



}

// ###########################################################3



// ###########################################################3
@Override
public Item getItemDropped(IBlockState state, Random rand, int fortune) {

	return Item.getItemFromBlock(MercenaryModBlocks.puerta3x3t00);
}

// ###########################################################3
@Override
public void onBlockDestroyedByExplosion(World worldIn, BlockPos pos, Explosion explosionIn) {
	removerPuerta(worldIn, pos, worldIn.getBlockState(pos));
}

// ###########################################################3
@Override
public void onBlockExploded(World worldIn, BlockPos pos, Explosion explosion) {
	// removerPuerta(worldIn, pos, worldIn.getBlockState(pos) );
	// worldIn.setBlockToAir(pos);
	this.onBlockDestroyedByExplosion(worldIn, pos, explosion);
}

// #################################################################################################3
@Override
public void onBlockDestroyedByPlayer(World worldIn, BlockPos pos, IBlockState state) {

	removerPuerta(worldIn, pos, state);

}

// #################################################################################################3
public void removerPuerta(World worldIn, BlockPos pos, IBlockState state) {

	int posX = pos.getX();
	int posY = pos.getY();
	int posZ = pos.getZ();

	BlockPos dpos = pos;
	IBlockState dbst = state;

	for (int dx = (posX - 1); dx < (posX + 2); dx++) {
		for (int dy = (posY - 1); dy < (posY + 2); dy++) {
			for (int dz = (posZ - 1); dz < (posZ + 2); dz++) {

				dpos = new BlockPos(dx, dy, dz);

				dbst = worldIn.getBlockState(dpos);

				if (this.isValidBlock(dbst)) {
					worldIn.destroyBlock(dpos, false);

				}

			}
		}
	}

}

// #################################################################################################3
public boolean sePuedeColocar(World worldIn, BlockPos centro, IBlockState state) {

	boolean colocable = true;

	IBlockState centroBst = worldIn.getBlockState(centro);
	EnumFacing centroEnum = (EnumFacing) centroBst.getValue(FACING);
	int centroFacing = -1;
	if (centroEnum != null) {
		centroFacing = centroEnum.getIndex();
	}

	BlockPos izquier = centro;
	BlockPos derecha = centro;
	BlockPos dpos = centro;

	Block bizq = MercenaryModBlocks.puerta3x3I;
	Block bder = MercenaryModBlocks.puerta3x3D;

	switch (centroFacing) {
	case 1:
		this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); // up
		break;

	case 2:
	case 3:
		// sur o norte
		izquier = centro.east(); // up(2).
		derecha = centro.west(); // up(2).

		break;

	case 4:
	case 5:
		// oeste
		// este
		izquier = centro.north(); // up(2).
		derecha = centro.south(); // up(2).
		break;

	}

	//System.out.println("@@  ntroFacing=" + centroFacing);

	for (int i = 0; i < 3; i++) {

		for (int o = 0; o < 3; o++) {

			switch (o) {
			case 0:
				dpos = centro.add(0, i, 0);
				break;
			case 1:
				dpos = izquier.add(0, i, 0);
				break;
			case 2:
				dpos = derecha.add(0, i, 0);
				break;
			}

			// dpos = centro;

			//System.out.println("@@@ blocke=" + dpos + "  " + worldIn.getBlockState(dpos).getBlock().getUnlocalizedName());

			if (!(worldIn.isAirBlock(dpos))) {
				if (!(isValidBlock(worldIn.getBlockState(dpos)))) {
					colocable = false;
				}
			}

		}

	}

	//System.out.println("$##################$ sePuedeColocar=" + colocable);

	return colocable;
}
// #################################################################################################3

@Override
public void breakBlock(World worldIn, BlockPos pos, IBlockState state) {
	super.breakBlock(worldIn, pos, state);
	worldIn.removeTileEntity(pos);
}

// #################################################################################################3
// ###########################################################3

@Override
public boolean isOpaqueCube() {
	return false;
}

@Override
public boolean isFullCube() {
	return false;
}

@Override
@SideOnly(Side.CLIENT)
public EnumWorldBlockLayer getBlockLayer() {
	return EnumWorldBlockLayer.CUTOUT;
}

@Override
    public boolean isPassable(IBlockAccess worldIn, BlockPos pos)
    {
        return true;
    }

// ###########################################################3

public boolean estaAbierta() {

	return true;
}

@Override
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn,
		EnumFacing side, float hitX, float hitY, float hitZ) {

	// if (!worldIn.isRemote)
	{
		int hand = playerIn.inventory.currentItem;

		//System.out.println("###################  generarPuertas(World worldIn, boolean abiertas, BlockPos centro)");
		generarPuertas(worldIn, false, false, pos);

		int facing = this.getMetaFromState(state);
	}

	return false;
}

// #########################################################################3
public static void generarPuertas(World worldIn, boolean cerrada, boolean abierta, BlockPos centro) {

	IBlockState centroBst = worldIn.getBlockState(centro);
	EnumFacing centroEnum = (EnumFacing) centroBst.getValue(FACING);
	int centroFacing = -1;
	if (centroEnum != null) {
		centroFacing = centroEnum.getIndex();
	}

	BlockPos izquier = centro;
	BlockPos derecha = centro;

	Block bizq = MercenaryModBlocks.puerta3x3I;
	Block bder = MercenaryModBlocks.puerta3x3D;

	switch (centroFacing) {
	case 1:
		 // up
		break;

	case 2:
		// sur
		izquier = centro.east(); // up(2).
		derecha = centro.west(); // up(2).
		break;

	case 3:
		// norte
		izquier = centro.west(); // up(2).
		derecha = centro.east(); // up(2).
		break;

	case 4:
		// este
		izquier = centro.north(); // up(2).
		derecha = centro.south(); // up(2).
		break;

	case 5:
		// oeste
		izquier = centro.south(); // up(2).
		derecha = centro.north(); // up(2).
		break;

	}

	IBlockState izquBst = worldIn.getBlockState(izquier);
	IBlockState dereBst = worldIn.getBlockState(derecha);

	int dereFacing = -1;
	int izquFacing = -1;

	if (isValidBlock(izquBst) & isValidBlock(dereBst)) {
		EnumFacing izquEnum = (EnumFacing) izquBst.getValue(FACING);
		EnumFacing dereEnum = (EnumFacing) dereBst.getValue(FACING);

		if (izquEnum != null) {
			izquFacing = izquEnum.getIndex();
		}

		if (dereEnum != null) {
			dereFacing = dereEnum.getIndex();
		}

	}

	//System.out.println("centroFacing" + centroFacing);
	//System.out.println("izquFacing" + izquFacing);
	//System.out.println("dereFacing" + dereFacing);

	if (cerrada)
	{
		izquFacing = 8;
	}



	switch (centroFacing) {

	// ################################################
	case 2:
		// sur
		if (abierta)
		{
			izquFacing = 2;
		}

		switch (izquFacing) {

		// la puerta esta cerrada abrirla
		case 2:

			worldIn.setBlockState(derecha,
					MercenaryModBlocks.puerta3x3I.getDefaultState().withProperty(FACING, EnumFacing.EAST));
			worldIn.setBlockState(izquier,
					MercenaryModBlocks.puerta3x3D.getDefaultState().withProperty(FACING, EnumFacing.WEST));

			IBlockState aire = Blocks.air.getDefaultState();
			IBlockState airesolidoW = MercenaryModBlocks.aireSolido00.getDefaultState().withProperty(FACING,
					EnumFacing.WEST);
			IBlockState airesolidoE = MercenaryModBlocks.aireSolido00.getDefaultState().withProperty(FACING,
					EnumFacing.EAST);

			worldIn.setBlockState(centro.up(), aire);
			worldIn.setBlockState(centro.up().west(), airesolidoE);
			worldIn.setBlockState(centro.up().east(), airesolidoW);

			worldIn.setBlockState(centro.down(), aire);
			worldIn.setBlockState(centro.down().west(), airesolidoE);
			worldIn.setBlockState(centro.down().east(), airesolidoW);

			;
			break;

		// la puerta esta abierta cerrarla
		default:

			worldIn.setBlockState(izquier,
					MercenaryModBlocks.puerta3x3I.getDefaultState().withProperty(FACING, EnumFacing.NORTH));
			worldIn.setBlockState(derecha,
					MercenaryModBlocks.puerta3x3D.getDefaultState().withProperty(FACING, EnumFacing.NORTH));

			IBlockState airesolido = MercenaryModBlocks.aireSolido00.getDefaultState().withProperty(FACING,
					EnumFacing.NORTH);

			worldIn.setBlockState(centro.up(), airesolido);
			worldIn.setBlockState(centro.up().west(), airesolido);
			worldIn.setBlockState(centro.up().east(), airesolido);

			worldIn.setBlockState(centro.down(), airesolido);
			worldIn.setBlockState(centro.down().west(), airesolido);
			worldIn.setBlockState(centro.down().east(), airesolido);

			;
			break;

		}
		;
		break;

	// ################################################

	case 3:
		// norte
		if (abierta)
		{
			izquFacing = 3;
		}

		switch (izquFacing) {

		// la puerta esta cerrada abrirla
		case 3:

			worldIn.setBlockState(derecha,
					MercenaryModBlocks.puerta3x3I.getDefaultState().withProperty(FACING, EnumFacing.WEST));
			worldIn.setBlockState(izquier,
					MercenaryModBlocks.puerta3x3D.getDefaultState().withProperty(FACING, EnumFacing.EAST));

			IBlockState aire = Blocks.air.getDefaultState();
			IBlockState airesolidoW = MercenaryModBlocks.aireSolido00.getDefaultState().withProperty(FACING,
					EnumFacing.WEST);
			IBlockState airesolidoE = MercenaryModBlocks.aireSolido00.getDefaultState().withProperty(FACING,
					EnumFacing.EAST);

			worldIn.setBlockState(centro.up(), aire);
			worldIn.setBlockState(centro.up().west(), airesolidoE);
			worldIn.setBlockState(centro.up().east(), airesolidoW);

			worldIn.setBlockState(centro.down(), aire);
			worldIn.setBlockState(centro.down().west(), airesolidoE);
			worldIn.setBlockState(centro.down().east(), airesolidoW);

			;
			break;

		// la puerta esta abierta cerrarla
		default:

			worldIn.setBlockState(izquier,
					MercenaryModBlocks.puerta3x3I.getDefaultState().withProperty(FACING, EnumFacing.SOUTH));
			worldIn.setBlockState(derecha,
					MercenaryModBlocks.puerta3x3D.getDefaultState().withProperty(FACING, EnumFacing.SOUTH));

			IBlockState airesolido = MercenaryModBlocks.aireSolido00.getDefaultState().withProperty(FACING,
					EnumFacing.SOUTH);

			worldIn.setBlockState(centro.up(), airesolido);
			worldIn.setBlockState(centro.up().west(), airesolido);
			worldIn.setBlockState(centro.up().east(), airesolido);

			worldIn.setBlockState(centro.down(), airesolido);
			worldIn.setBlockState(centro.down().west(), airesolido);
			worldIn.setBlockState(centro.down().east(), airesolido);

			;
			break;

		}
		;
		break;
	// ################################################

	case 4:
		// este
		if (abierta)
		{
			izquFacing = 4;
		}
		switch (izquFacing) {

		// la puerta esta cerrada abrirla
		case 4:

			worldIn.setBlockState(derecha,
					MercenaryModBlocks.puerta3x3I.getDefaultState().withProperty(FACING, EnumFacing.NORTH));
			worldIn.setBlockState(izquier,
					MercenaryModBlocks.puerta3x3D.getDefaultState().withProperty(FACING, EnumFacing.SOUTH));

			IBlockState aire = Blocks.air.getDefaultState();
			IBlockState airesolidoN = MercenaryModBlocks.aireSolido00.getDefaultState().withProperty(FACING,
					EnumFacing.NORTH);
			IBlockState airesolidoS = MercenaryModBlocks.aireSolido00.getDefaultState().withProperty(FACING,
					EnumFacing.SOUTH);

			worldIn.setBlockState(centro.up(), aire);
			worldIn.setBlockState(centro.up().north(), airesolidoS);
			worldIn.setBlockState(centro.up().south(), airesolidoN);

			worldIn.setBlockState(centro.down(), aire);
			worldIn.setBlockState(centro.down().north(), airesolidoS);
			worldIn.setBlockState(centro.down().south(), airesolidoN);

			;
			break;

		// la puerta esta abierta cerrarla
		default:

			worldIn.setBlockState(izquier,
					MercenaryModBlocks.puerta3x3I.getDefaultState().withProperty(FACING, EnumFacing.WEST));
			worldIn.setBlockState(derecha,
					MercenaryModBlocks.puerta3x3D.getDefaultState().withProperty(FACING, EnumFacing.WEST));

			IBlockState airesolido = MercenaryModBlocks.aireSolido00.getDefaultState().withProperty(FACING,
					EnumFacing.WEST);

			worldIn.setBlockState(centro.up(), airesolido);
			worldIn.setBlockState(centro.up().north(), airesolido);
			worldIn.setBlockState(centro.up().south(), airesolido);

			worldIn.setBlockState(centro.down(), airesolido);
			worldIn.setBlockState(centro.down().north(), airesolido);
			worldIn.setBlockState(centro.down().south(), airesolido);

			;
			break;

		}
		;
		break;

	// ################################################

	case 5:
		// oeste
		if (abierta)
		{
			izquFacing = 5;
		}
		switch (izquFacing) {

		// la puerta esta cerrada abrirla
		case 5:

			worldIn.setBlockState(derecha,
					MercenaryModBlocks.puerta3x3I.getDefaultState().withProperty(FACING, EnumFacing.SOUTH));
			worldIn.setBlockState(izquier,
					MercenaryModBlocks.puerta3x3D.getDefaultState().withProperty(FACING, EnumFacing.NORTH));

			IBlockState aire = Blocks.air.getDefaultState();
			IBlockState airesolidoN = MercenaryModBlocks.aireSolido00.getDefaultState().withProperty(FACING,
					EnumFacing.NORTH);
			IBlockState airesolidoS = MercenaryModBlocks.aireSolido00.getDefaultState().withProperty(FACING,
					EnumFacing.SOUTH);

			worldIn.setBlockState(centro.up(), aire);
			worldIn.setBlockState(centro.up().north(), airesolidoS);
			worldIn.setBlockState(centro.up().south(), airesolidoN);

			worldIn.setBlockState(centro.down(), aire);
			worldIn.setBlockState(centro.down().north(), airesolidoS);
			worldIn.setBlockState(centro.down().south(), airesolidoN);

			;
			break;

		// la puerta esta abierta cerrarla
		default:

			worldIn.setBlockState(izquier,
					MercenaryModBlocks.puerta3x3I.getDefaultState().withProperty(FACING, EnumFacing.EAST));
			worldIn.setBlockState(derecha,
					MercenaryModBlocks.puerta3x3D.getDefaultState().withProperty(FACING, EnumFacing.EAST));

			IBlockState airesolido = MercenaryModBlocks.aireSolido00.getDefaultState().withProperty(FACING,
					EnumFacing.EAST);

			worldIn.setBlockState(centro.up(), airesolido);
			worldIn.setBlockState(centro.up().north(), airesolido);
			worldIn.setBlockState(centro.up().south(), airesolido);

			worldIn.setBlockState(centro.down(), airesolido);
			worldIn.setBlockState(centro.down().north(), airesolido);
			worldIn.setBlockState(centro.down().south(), airesolido);

			;
			break;

		}
		;
		break;

	}

}

 // #########################################################################3
static boolean isValidBlock(IBlockState blkst) {

	Block blk = blkst.getBlock();

	if (blk == MercenaryModBlocks.puerta3x3I) {
		return true;
	}

	if (blk == MercenaryModBlocks.puerta3x3D) {
		return true;
	}

	if (blk == MercenaryModBlocks.puerta3x3t00) {
		return true;
	}

	if (blk == MercenaryModBlocks.aireSolido00) {
		return true;
	}

	if (blk == Blocks.water) {
		return true;
	}

	if (blk == Blocks.flowing_water) {
		return true;
	}

	if (blk == Blocks.lava) {
		return true;
	}

	if (blk == Blocks.flowing_lava) {
		return true;
	}

	return false;
}

@Override
public void onNeighborBlockChange(World worldIn, BlockPos pos, IBlockState state, Block neighborBlock) {


}

// ###########################################################3

public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state) 
{



}

@Override
public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer,
		ItemStack stack) {

	//System.out.println("#############  onBlockPlacedBy=" + getFacingFromEntity(worldIn, pos, placer));
	//System.out.println(" pos=" + pos);


	if (sePuedeColocar(worldIn, pos, state))
	// if (!worldIn.isRemote)
	{
		IBlockState puertaState = worldIn.getBlockState(pos);
		worldIn.setBlockToAir(pos);
		worldIn.setBlockState(pos.up(), puertaState);
		generarPuertas(worldIn, true, false,pos.up());
	} else {
		worldIn.setBlockToAir(pos);

		if (!worldIn.isRemote) {
			worldIn.spawnEntityInWorld(new EntityItem(worldIn, pos.getX(), pos.getY(), pos.getZ(),
			new ItemStack(state.getBlock(), 1, 0)));
		}

	}

}

// ###########################################################3
@Override
public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ,
		int meta, EntityLivingBase placer) {

	return this.getDefaultState().withProperty(FACING, getFacingFromEntity(worldIn, pos, placer) ).withProperty(OPEN, false);

}

// ###########################################################3
@Override
public void setBlockBoundsBasedOnState(IBlockAccess worldIn, BlockPos pos) {
	IBlockState iblockstate = worldIn.getBlockState(pos);

	float f = 0.25F;
	EnumFacing enumfacing = (EnumFacing) iblockstate.getValue(FACING);

	if (enumfacing != null) {
		switch (puerta3x3t00.SwitchEnumFacing.FACING_LOOKUP[enumfacing.ordinal()]) {

            case 1:
                this.setBlockBounds(0.0F, 0.80F, 0.0F, 1.0F, 1.0F, 0.95F);
                break;
            case 2:
                this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.25F, 1.0F);
                break;
            case 3:
            	this.setBlockBounds(0.0F, 0.0F, 0.80F, 1.0F, 1.0F, 0.95F);
                break;
            case 4:
                this.setBlockBounds(0.0F, 0.0F, 0.5F, 1.0F, 1.0F, 0.20F);
                break;
            case 5:
                this.setBlockBounds(0.80F, 0.0F, 0.0F, 0.95F, 1.0F, 1.0F);
                break;
            case 6:
                this.setBlockBounds(0.5F, 0.0F, 0.0F, 0.20F, 1.0F, 1.0F);

		}
	}

	else {
		this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
	}

	// this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
}


// ###########################################################3
@Override
    public AxisAlignedBB getCollisionBoundingBox(World worldIn, BlockPos pos, IBlockState state)
    {
	boolean open = ((Boolean)state.getValue(OPEN)).booleanValue();
	EnumFacing enumfacing = (EnumFacing) state.getValue(FACING);

	double x = (double)pos.getX();
	double y = (double)pos.getY();
	double z = (double)pos.getZ();

	float f = 0.25F;

	AxisAlignedBB bb = new AxisAlignedBB(x, y, z, x + 1, y+ 1, z + 1 );



	if (enumfacing != null) {
		switch (puerta3x3t00.SwitchEnumFacing.FACING_LOOKUP[enumfacing.ordinal()]) {

            case 1: //up
               // this.setBlockBounds(0.0F, 0.80F, 0.0F, 1.0F, 1.0F, 0.95F);
               break;
               
            case 2: //down
               break;
            
            case 3: //north
            	//this.setBlockBounds(0.0F, 0.0F, 0.80F, 1.0F, 1.0F, 0.95F);
            	bb = new AxisAlignedBB( x-1, y, z, x+2, y+1, z+1 );
            	
               break;
                
            case 4: //sur 
               // this.setBlockBounds(0.0F, 0.0F, 0.5F, 1.0F, 1.0F, 0.20F);
                break;
                
            case 5: //oeste
               // this.setBlockBounds(0.80F, 0.0F, 0.0F, 0.95F, 1.0F, 1.0F);
                break;
            case 6: //este
                //this.setBlockBounds(0.5F, 0.0F, 0.0F, 0.20F, 1.0F, 1.0F);

		}
	}









	/*
        if (((Boolean)state.getValue(OPEN)).booleanValue())
        {
            return null;
        }
        else
        {
            EnumFacing.Axis axis = ((EnumFacing)state.getValue(FACING)).getAxis();
            return axis == EnumFacing.Axis.Z ?
            		
            		new AxisAlignedBB((double)pos.getX(), (double)pos.getY(), (double)((float)pos.getZ() + 0.375F), 
            				          (double)(pos.getX() + 1), (double)((float)pos.getY() + 1.5F), (double)((float)pos.getZ() + 0.625F)) 
            		:
            		new AxisAlignedBB((double)((float)pos.getX() + 0.375F), (double)pos.getY(), (double)pos.getZ(), 
            		                  (double)((float)pos.getX() + 0.625F), (double)((float)pos.getY() + 1.5F), (double)(pos.getZ() + 1));
        }
        */
        
        
        
        return bb;
        
    }
// ###########################################################3
























// ###########################################################3
@Override
public void setBlockBoundsForItemRender() {
	this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
}

// ###########################################################3

// @Override
public static EnumFacing getFacingFromEntity(World worldIn, BlockPos clickedBlock, EntityLivingBase entityIn) {

	if (MathHelper.abs((float) entityIn.posX - (float) clickedBlock.getX()) < 2.0F
			&& MathHelper.abs((float) entityIn.posZ - (float) clickedBlock.getZ()) < 2.0F) {
		double d0 = entityIn.posY + (double) entityIn.getEyeHeight();

		/*
		 * if (d0 - (double)clickedBlock.getY() > 2.0D) { return
		 * EnumFacing.UP; }
		 * 
		 * if ((double)clickedBlock.getY() - d0 > 0.0D) { return
		 * EnumFacing.DOWN; }
		 */

	}

	return entityIn.getHorizontalFacing().getOpposite();
}

// ###########################################################3

@SideOnly(Side.CLIENT)
public IBlockState getStateForEntityRender(IBlockState state) {
	return this.getDefaultState().withProperty(FACING, EnumFacing.NORTH);
}

// ###########################################################3

protected BlockState createBlockState() {
	return new BlockState(this, new IProperty[] { FACING });
}

// ###########################################################3

/**
 * Convert the BlockState into the correct metadata value
 */
@Override
public int getMetaFromState(IBlockState state) {
	byte b0 = 0;
	int i = b0 | ((EnumFacing) state.getValue(FACING)).getIndex();

	return i;
}

// #################################################################################################3
/**
 * Convert the given metadata into a BlockState for this Block
 */
@Override
public IBlockState getStateFromMeta(int meta) {

	switch (meta) {
	case 1:
		return this.getDefaultState().withProperty(FACING, EnumFacing.UP); // up

	case 2:
		return this.getDefaultState().withProperty(FACING, EnumFacing.DOWN);// down

	default:
		return this.getDefaultState().withProperty(FACING, EnumFacing.NORTH); // norte

	case 4:
		return this.getDefaultState().withProperty(FACING, EnumFacing.SOUTH);// sur

	case 5:
		return this.getDefaultState().withProperty(FACING, EnumFacing.WEST);// oeste

	case 6:
		return this.getDefaultState().withProperty(FACING, EnumFacing.EAST);// este
	}

}

// #################################################################################################3

static final class SwitchEnumFacing {
	static final int[] FACING_LOOKUP = new int[EnumFacing.values().length];
	private static final String __OBFID = "CL_00002037";

	static {
		try {
			FACING_LOOKUP[EnumFacing.DOWN.ordinal()] = 1;
		} catch (NoSuchFieldError var6) {
			;
		}

		try {
			FACING_LOOKUP[EnumFacing.UP.ordinal()] = 2;
		} catch (NoSuchFieldError var5) {
			;
		}

		try {
			FACING_LOOKUP[EnumFacing.NORTH.ordinal()] = 3;
		} catch (NoSuchFieldError var4) {
			;
		}

		try {
			FACING_LOOKUP[EnumFacing.SOUTH.ordinal()] = 4;
		} catch (NoSuchFieldError var3) {
			;
		}

		try {
			FACING_LOOKUP[EnumFacing.WEST.ordinal()] = 5;
		} catch (NoSuchFieldError var2) {
			;
		}

		try {
			FACING_LOOKUP[EnumFacing.EAST.ordinal()] = 6;
		} catch (NoSuchFieldError var1) {
			;
		}
	}
}

// ###########################################################3

// #########################################################################3
// ###########################################################3

}// fin de la clase

Posted

Your

createBlockState

method must return a

BlockState

with all of the block's properties. Yours only includes the

FACING

property, not the

OPEN

property.

 

If you're extending

BlockDirectional

, you should use the

BlockDirectional.FACING

property instead of creating your own. If you need your own facing property, don't extend

BlockDirectional

.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted

ya  got it

 

i found i miss this method in mi block

 

// ###########################################################3

 

protected BlockState createBlockState() {

return new BlockState(this, new IProperty[] { FACING, OPEN });

}

 

// ###########################################################3

 

is now, well not crashing soo i leave ths as solved

Posted

Just FYI, just as you don't need 'new Object[]{}' when adding crafting recipes, you also don't need 'new IProperty[]{}' when creating block states - it's just an artifact from Java that you see as a result of viewing decompiled code.

@Override
protected BlockState createBlockState() {
  return new BlockState(this, FACING, OPEN); // this works just fine
}

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.