Jump to content

Recommended Posts

Posted

So I made custom fire but when I hit it to put it out the block under it breaks and then because of that the fire goes out, here's my code:

public class CheeseFire extends Block {
public static final PropertyInteger AGE = PropertyInteger.create("age", 0, 15);
public static final PropertyBool NORTH = PropertyBool.create("north");
public static final PropertyBool EAST = PropertyBool.create("east");
public static final PropertyBool SOUTH = PropertyBool.create("south");
public static final PropertyBool WEST = PropertyBool.create("west");
public static final PropertyBool UPPER = PropertyBool.create("up");
private final Map<Block, Integer> encouragements = Maps.<Block, Integer>newIdentityHashMap();
private final Map<Block, Integer> flammabilities = Maps.<Block, Integer>newIdentityHashMap();

/**
 * Get the actual Block state of this Block at the given position. This
 * applies properties not visible in the metadata, such as fence
 * connections.
 */
public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) {
	if (!worldIn.getBlockState(pos.down()).isSideSolid(worldIn, pos.down(), EnumFacing.UP)
			&& !CheeseBlocks.CHEESE_FIRE.canCatchFire(worldIn, pos.down(), EnumFacing.UP)) {
		return state.withProperty(NORTH, this.canCatchFire(worldIn, pos.north(), EnumFacing.SOUTH))
				.withProperty(EAST, this.canCatchFire(worldIn, pos.east(), EnumFacing.WEST))
				.withProperty(SOUTH, this.canCatchFire(worldIn, pos.south(), EnumFacing.NORTH))
				.withProperty(WEST, this.canCatchFire(worldIn, pos.west(), EnumFacing.EAST))
				.withProperty(UPPER, this.canCatchFire(worldIn, pos.up(), EnumFacing.DOWN));
	}
	return this.getDefaultState();
}

public CheeseFire() {
	super(Material.FIRE);
	this.setDefaultState(this.blockState.getBaseState().withProperty(AGE, Integer.valueOf(0))
			.withProperty(NORTH, Boolean.valueOf(false)).withProperty(EAST, Boolean.valueOf(false))
			.withProperty(SOUTH, Boolean.valueOf(false)).withProperty(WEST, Boolean.valueOf(false))
			.withProperty(UPPER, Boolean.valueOf(false)));
	this.setTickRandomly(true);
}

public static void init() {
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.PLANKS, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.DOUBLE_WOODEN_SLAB, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.WOODEN_SLAB, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.OAK_FENCE_GATE, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.SPRUCE_FENCE_GATE, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.BIRCH_FENCE_GATE, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.JUNGLE_FENCE_GATE, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.DARK_OAK_FENCE_GATE, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.ACACIA_FENCE_GATE, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.OAK_FENCE, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.SPRUCE_FENCE, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.BIRCH_FENCE, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.JUNGLE_FENCE, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.DARK_OAK_FENCE, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.ACACIA_FENCE, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.OAK_STAIRS, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.BIRCH_STAIRS, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.SPRUCE_STAIRS, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.JUNGLE_STAIRS, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.ACACIA_STAIRS, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.DARK_OAK_STAIRS, 5, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.LOG, 5, 5);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.LOG2, 5, 5);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.LEAVES, 30, 60);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.LEAVES2, 30, 60);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.BOOKSHELF, 30, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.TNT, 15, 100);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.TALLGRASS, 60, 100);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.DOUBLE_PLANT, 60, 100);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.YELLOW_FLOWER, 60, 100);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.RED_FLOWER, 60, 100);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.DEADBUSH, 60, 100);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.WOOL, 30, 60);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.VINE, 15, 100);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.COAL_BLOCK, 5, 5);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.HAY_BLOCK, 60, 20);
	CheeseBlocks.CHEESE_FIRE.setFireInfo(Blocks.CARPET, 60, 20);
}

public void setFireInfo(Block blockIn, int encouragement, int flammability) {
	if (blockIn == Blocks.AIR)
		throw new IllegalArgumentException("Tried to set air on fire... This is bad.");
	this.encouragements.put(blockIn, Integer.valueOf(encouragement));
	this.flammabilities.put(blockIn, Integer.valueOf(flammability));
}

@Nullable
public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, IBlockAccess worldIn, BlockPos pos) {
	return NULL_AABB;
}

/**
 * Used to determine ambient occlusion and culling when rebuilding chunks
 * for render
 */
public boolean isOpaqueCube(IBlockState state) {
	return false;
}

public boolean isFullCube(IBlockState state) {
	return false;
}

/**
 * Returns the quantity of items to drop on block destruction.
 */
public int quantityDropped(Random random) {
	return 0;
}

/**
 * How many world ticks before ticking
 */
public int tickRate(World worldIn) {
	return 30;
}

public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand) {
	if (worldIn.getGameRules().getBoolean("doFireTick")) {
		if (!this.canPlaceBlockAt(worldIn, pos)) {
			worldIn.setBlockToAir(pos);
		}

		Block block = worldIn.getBlockState(pos.down()).getBlock();
		boolean flag = block.isFireSource(worldIn, pos.down(), EnumFacing.UP);

		int i = ((Integer) state.getValue(AGE)).intValue();

		if (!flag && worldIn.isRaining() && this.canDie(worldIn, pos)
				&& rand.nextFloat() < 0.2F + (float) i * 0.03F) {
			worldIn.setBlockToAir(pos);
		} else {
			if (i < 15) {
				state = state.withProperty(AGE, Integer.valueOf(i + rand.nextInt(3) / 2));
				worldIn.setBlockState(pos, state, 4);
			}

			worldIn.scheduleUpdate(pos, this, this.tickRate(worldIn) + rand.nextInt(10));

			if (!flag) {
				if (!this.canNeighborCatchFire(worldIn, pos)) {
					if (!worldIn.getBlockState(pos.down()).isSideSolid(worldIn, pos.down(), EnumFacing.UP)) {
						worldIn.setBlockToAir(pos);
					}

					return;
				}

				if (!this.canCatchFire(worldIn, pos.down(), EnumFacing.UP) && rand.nextInt(50) == 0) {
					worldIn.setBlockToAir(pos);
					return;
				}
			}

			boolean flag1 = worldIn.isBlockinHighHumidity(pos);
			int j = 0;

			if (flag1) {
				j = -50;
			}

			this.tryCatchFire(worldIn, pos.east(), 51 + j, rand, i, EnumFacing.WEST);
			this.tryCatchFire(worldIn, pos.west(), 51 + j, rand, i, EnumFacing.EAST);
			this.tryCatchFire(worldIn, pos.down(), 51 + j, rand, i, EnumFacing.UP);
			this.tryCatchFire(worldIn, pos.up(), 51 + j, rand, i, EnumFacing.DOWN);
			this.tryCatchFire(worldIn, pos.north(), 51 + j, rand, i, EnumFacing.SOUTH);
			this.tryCatchFire(worldIn, pos.south(), 51 + j, rand, i, EnumFacing.NORTH);

			for (int k = -1; k <= 1; ++k) {
				for (int l = -1; l <= 1; ++l) {
					for (int i1 = -1; i1 <= 4; ++i1) {
						if (k != 0 || i1 != 0 || l != 0) {
							int j1 = 100;

							if (i1 > 1) {
								j1 += (i1 - 1) * 100;
							}

							BlockPos blockpos = pos.add(k, i1, l);
							int k1 = this.getNeighborEncouragement(worldIn, blockpos);

							if (k1 > 0) {
								int l1 = (k1 + 40 + worldIn.getDifficulty().getDifficultyId() * 7) / (i + 30);

								if (flag1) {
									l1 /= 2;
								}

								if (l1 > 0 && rand.nextInt(j1) <= l1
										&& !this.canDie(worldIn, blockpos)) {
									int i2 = i + rand.nextInt(5) / 4;

									if (i2 > 15) {
										i2 = 15;
									}

									worldIn.setBlockState(blockpos, state.withProperty(AGE, Integer.valueOf(i2)),
											3);
								}
							}
						}
					}
				}
			}
		}
	}
}

protected boolean canDie(World worldIn, BlockPos pos) {
	return false;
}

public boolean requiresUpdates() {
	return false;
}

@Deprecated // Use Block.getFlammability
public int getFlammability(Block blockIn) {
	Integer integer = (Integer) this.flammabilities.get(blockIn);
	return integer == null ? 0 : integer.intValue();
}

@Deprecated // Use Block.getFlammability
public int getEncouragement(Block blockIn) {
	Integer integer = (Integer) this.encouragements.get(blockIn);
	return integer == null ? 0 : integer.intValue();
}

@Deprecated // Use tryCatchFire with face below
private void catchOnFire(World worldIn, BlockPos pos, int chance, Random random, int age) {
	this.tryCatchFire(worldIn, pos, chance, random, age, EnumFacing.UP);
}

private void tryCatchFire(World worldIn, BlockPos pos, int chance, Random random, int age, EnumFacing face) {
	int i = worldIn.getBlockState(pos).getBlock().getFlammability(worldIn, pos, face);

	if (random.nextInt(chance) < i) {
		IBlockState iblockstate = worldIn.getBlockState(pos);

		if (random.nextInt(age + 10) < 5 && !worldIn.isRainingAt(pos)) {
			int j = age + random.nextInt(5) / 4;

			if (j > 15) {
				j = 15;
			}

			worldIn.setBlockState(pos, this.getDefaultState().withProperty(AGE, Integer.valueOf(j)), 3);
		} else {
			worldIn.setBlockToAir(pos);
		}

		if (iblockstate.getBlock() == Blocks.TNT) {
			Blocks.TNT.onBlockDestroyedByPlayer(worldIn, pos,
					iblockstate.withProperty(BlockTNT.EXPLODE, Boolean.valueOf(true)));
		}
	}
}

private boolean canNeighborCatchFire(World worldIn, BlockPos pos) {
	for (EnumFacing enumfacing : EnumFacing.values()) {
		if (this.canCatchFire(worldIn, pos.offset(enumfacing), enumfacing.getOpposite())) {
			return true;
		}
	}

	return false;
}

private int getNeighborEncouragement(World worldIn, BlockPos pos) {
	if (!worldIn.isAirBlock(pos)) {
		return 0;
	} else {
		int i = 0;

		for (EnumFacing enumfacing : EnumFacing.values()) {
			i = Math.max(worldIn.getBlockState(pos.offset(enumfacing)).getBlock().getFireSpreadSpeed(worldIn,
					pos.offset(enumfacing), enumfacing.getOpposite()), i);
		}

		return i;
	}
}

/**
 * Returns if this block is collidable. Only used by fire, although stairs
 * return that of the block that the stair is made of (though nobody's going
 * to make fire stairs, right?)
 */
public boolean isCollidable() {
	return false;
}

/**
 * Checks if the block can be caught on fire
 */
@Deprecated // Use canCatchFire with face sensitive version below
public boolean canCatchFire(IBlockAccess worldIn, BlockPos pos) {
	return canCatchFire(worldIn, pos, EnumFacing.UP);
}

public boolean canPlaceBlockAt(World worldIn, BlockPos pos) {
	return worldIn.getBlockState(pos.down()).isFullyOpaque() || this.canNeighborCatchFire(worldIn, pos);
}

/**
 * Called when a neighboring block was changed and marks that this state
 * should perform any checks during a neighbor change. Cases may include
 * when redstone power is updated, cactus blocks popping off due to a
 * neighboring solid block, etc.
 */
public void neighborChanged(IBlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos p_189540_5_) {
	if (!worldIn.getBlockState(pos.down()).isFullyOpaque() && !this.canNeighborCatchFire(worldIn, pos)) {
		worldIn.setBlockToAir(pos);
	}
}

/**
 * Called after the block is set in the Chunk data, but before the Tile
 * Entity is set
 */
public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state) {
	if (worldIn.provider.getDimensionType().getId() > 0 || !CheeseBlocks.CHEESE_PORTAL.trySpawnPortal(worldIn, pos)) {
		if (!worldIn.getBlockState(pos.down()).isFullyOpaque() && !this.canNeighborCatchFire(worldIn, pos)) {
			worldIn.setBlockToAir(pos);
		} else {
			worldIn.scheduleUpdate(pos, this, this.tickRate(worldIn) + worldIn.rand.nextInt(10));
		}
	}
}

@SideOnly(Side.CLIENT)
public void randomDisplayTick(IBlockState stateIn, World worldIn, BlockPos pos, Random rand) {
	if (rand.nextInt(24) == 0) {
		worldIn.playSound((double) ((float) pos.getX() + 0.5F), (double) ((float) pos.getY() + 0.5F),
				(double) ((float) pos.getZ() + 0.5F), SoundEvents.BLOCK_FIRE_AMBIENT, SoundCategory.BLOCKS,
				1.0F + rand.nextFloat(), rand.nextFloat() * 0.7F + 0.3F, false);
	}

	if (!worldIn.getBlockState(pos.down()).isSideSolid(worldIn, pos.down(), EnumFacing.UP)
			&& !CheeseBlocks.CHEESE_FIRE.canCatchFire(worldIn, pos.down(), EnumFacing.UP)) {
		if (CheeseBlocks.CHEESE_FIRE.canCatchFire(worldIn, pos.west(), EnumFacing.EAST)) {
			for (int j = 0; j < 2; ++j) {
				double d3 = (double) pos.getX() + rand.nextDouble() * 0.10000000149011612D;
				double d8 = (double) pos.getY() + rand.nextDouble();
				double d13 = (double) pos.getZ() + rand.nextDouble();
				worldIn.spawnParticle(EnumParticleTypes.SMOKE_LARGE, d3, d8, d13, 0.0D, 0.0D, 0.0D, new int[0]);
			}
		}

		if (CheeseBlocks.CHEESE_FIRE.canCatchFire(worldIn, pos.east(), EnumFacing.WEST)) {
			for (int k = 0; k < 2; ++k) {
				double d4 = (double) (pos.getX() + 1) - rand.nextDouble() * 0.10000000149011612D;
				double d9 = (double) pos.getY() + rand.nextDouble();
				double d14 = (double) pos.getZ() + rand.nextDouble();
				worldIn.spawnParticle(EnumParticleTypes.SMOKE_LARGE, d4, d9, d14, 0.0D, 0.0D, 0.0D, new int[0]);
			}
		}

		if (CheeseBlocks.CHEESE_FIRE.canCatchFire(worldIn, pos.north(), EnumFacing.SOUTH)) {
			for (int l = 0; l < 2; ++l) {
				double d5 = (double) pos.getX() + rand.nextDouble();
				double d10 = (double) pos.getY() + rand.nextDouble();
				double d15 = (double) pos.getZ() + rand.nextDouble() * 0.10000000149011612D;
				worldIn.spawnParticle(EnumParticleTypes.SMOKE_LARGE, d5, d10, d15, 0.0D, 0.0D, 0.0D, new int[0]);
			}
		}

		if (CheeseBlocks.CHEESE_FIRE.canCatchFire(worldIn, pos.south(), EnumFacing.NORTH)) {
			for (int i1 = 0; i1 < 2; ++i1) {
				double d6 = (double) pos.getX() + rand.nextDouble();
				double d11 = (double) pos.getY() + rand.nextDouble();
				double d16 = (double) (pos.getZ() + 1) - rand.nextDouble() * 0.10000000149011612D;
				worldIn.spawnParticle(EnumParticleTypes.SMOKE_LARGE, d6, d11, d16, 0.0D, 0.0D, 0.0D, new int[0]);
			}
		}

		if ((CheeseBlocks.CHEESE_FIRE).canCatchFire(worldIn, pos.up(), EnumFacing.DOWN)) {
			for (int j1 = 0; j1 < 2; ++j1) {
				double d7 = (double) pos.getX() + rand.nextDouble();
				double d12 = (double) (pos.getY() + 1) - rand.nextDouble() * 0.10000000149011612D;
				double d17 = (double) pos.getZ() + rand.nextDouble();
				worldIn.spawnParticle(EnumParticleTypes.SMOKE_LARGE, d7, d12, d17, 0.0D, 0.0D, 0.0D, new int[0]);
			}
		}
	} else {
		for (int i = 0; i < 3; ++i) {
			double d0 = (double) pos.getX() + rand.nextDouble();
			double d1 = (double) pos.getY() + rand.nextDouble() * 0.5D + 0.5D;
			double d2 = (double) pos.getZ() + rand.nextDouble();
			worldIn.spawnParticle(EnumParticleTypes.SMOKE_LARGE, d0, d1, d2, 0.0D, 0.0D, 0.0D, new int[0]);
		}
	}
}

/**
 * Get the MapColor for this Block and the given BlockState
 */
public MapColor getMapColor(IBlockState state) {
	return MapColor.TNT;
}

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

/**
 * Convert the given metadata into a BlockState for this Block
 */
public IBlockState getStateFromMeta(int meta) {
	return this.getDefaultState().withProperty(AGE, Integer.valueOf(meta));
}

/**
 * Convert the BlockState into the correct metadata value
 */
public int getMetaFromState(IBlockState state) {
	return ((Integer) state.getValue(AGE)).intValue();
}

protected BlockStateContainer createBlockState() {
	return new BlockStateContainer(this, new IProperty[] { AGE, NORTH, EAST, SOUTH, WEST, UPPER });
}

/*
 * ================================= Forge Start ======================================
 */
/**
 * Side sensitive version that calls the block function.
 *
 * @param world
 *            The current world
 * @param pos
 *            Block position
 * @param face
 *            The side the fire is coming from
 * @return True if the face can catch fire.
 */
public boolean canCatchFire(IBlockAccess world, BlockPos pos, EnumFacing face) {
	return world.getBlockState(pos).getBlock().isFlammable(world, pos, face);
}
/*
 * ================================= Forge End ======================================
 */
}

Help is much appreciated

And yes, I intentionally removed some of the age things because it is really strong fire (texture is blue and cheese is obviously a really good lighting material)

Classes: 94

Lines of code: 12173

Other files: 206

Github repo: https://github.com/KokkieBeer/DeGeweldigeMod

Posted

So now I have this:

@SubscribeEvent
public void playerInteract(PlayerInteractEvent event) {
	BlockPos pos = event.getPos();
	World world = event.getWorld();
	EntityPlayer player = event.getEntityPlayer();
	pos = pos.offset(event.getFace());

        if (world.getBlockState(pos).getBlock() == CheeseBlocks.CHEESE_FIRE) {
            world.playEvent(player, 1009, pos, 0);
            world.setBlockToAir(pos);
        }
}

in my common event handler but it doesn't work..?

Classes: 94

Lines of code: 12173

Other files: 206

Github repo: https://github.com/KokkieBeer/DeGeweldigeMod

Posted

I have this but it still doesn't work D: :

	@SubscribeEvent
public void playerInteract(PlayerInteractEvent.LeftClickBlock event) {
	BlockPos pos = event.getPos();
	World world = event.getWorld();
	EntityPlayer player = event.getEntityPlayer();
	pos = pos.offset(event.getFace());

        if (world.getBlockState(pos).getBlock() == CheeseBlocks.CHEESE_FIRE) {
            world.playEvent(player, 1009, pos, 0);
            world.setBlockToAir(pos);
        }
}

Classes: 94

Lines of code: 12173

Other files: 206

Github repo: https://github.com/KokkieBeer/DeGeweldigeMod

Posted

What happens?  That is, what does happen that you don't want or what doesn't happen that you do want?

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

1) you didn't cancel the event

2) you don't play any sounds

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted
	@SubscribeEvent
public void playerInteract(PlayerInteractEvent.LeftClickBlock event) {
	BlockPos pos = event.getPos();
	World world = event.getWorld();
	EntityPlayer player = event.getEntityPlayer();
	pos = pos.offset(event.getFace());

        if (world.getBlockState(pos).getBlock() == CheeseBlocks.CHEESE_FIRE) {
        	event.setCanceled(true);
        	player.playSound(SoundEvents.BLOCK_FIRE_EXTINGUISH, 1.0F, 1.0F);
            world.setBlockToAir(pos);
        }
}

Doesn't work

Classes: 94

Lines of code: 12173

Other files: 206

Github repo: https://github.com/KokkieBeer/DeGeweldigeMod

Posted

Define "doesn't work". Does it break the block under it? Does it do nothing? Does it break both blocks? Be more specific than "it doesn't work" if you want help.

 

You should use the debugger to see why the symptoms are happening.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Posted

Again: use the debugger to find out why it isn't called. If you put a

sysout

before the if-statement, does it fire? If not, your issue might be registering the event handler.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Posted

I put it before the if-statement, but it didn't fire, my commonhandler is registered the same way as my clienthandler (only on serverside obviously) my main class

@Mod(modid = Reference.MODID, name = Reference.NAME, version = Reference.VERSION, acceptedMinecraftVersions = "[1.11]")
public class KokkieMod {

@SidedProxy(clientSide = Reference.CLIENTPROXY, serverSide = Reference.COMMONPROXY)
public static CommonProxy proxy;

@Instance(Reference.MODID)
public static KokkieMod KMInstance;

@EventHandler
public void preInit(FMLPreInitializationEvent event) {
	new CheeseBlocks();
	new CheeseItems();
	new CheeseMobs();
	new CheeseAchievements();
	new CheeseSpawnPlacementRegistry();
	new CheeseBiomes();
	new CheeseTabs();
	new CheesePacketHandler();
	new CheeseDimension();
	proxy.registerModels();
	proxy.renderEntities();
	proxy.setTitle("Minecraft - " + Minecraft.getMinecraft().getVersion() + " | KokkieMod - " + Reference.VERSION);
}

@EventHandler
public static void init(FMLInitializationEvent event) {
	new CheeseCraftingAndSmelting();

	proxy.registerEventHandler();
	NetworkRegistry.INSTANCE.registerGuiHandler(KMInstance, new CheeseGuiHandler());

	GameRegistry.registerWorldGenerator(new CheeseGeneration(), 0);
}

@EventHandler
public static void postInit(FMLPostInitializationEvent event) {
	WorldType CHEESE = new WorldTypeCheese(4, "Cheese");
}
}

my common proxy

public class CommonProxy {

public void registerModels() {

}

public void renderEntities() {

}

public void setTitle(String title) {
}

public void registerEventHandler() {
	MinecraftForge.EVENT_BUS.register(new CheeseCommonHandler());
}

}

my common handler

public class CheeseCommonHandler {

@SubscribeEvent
public void playerInteract(PlayerInteractEvent.LeftClickBlock event) {
	BlockPos pos = event.getPos();
	World world = event.getWorld();
	EntityPlayer player = event.getEntityPlayer();
	pos = pos.offset(event.getFace());

        if (world.getBlockState(pos).getBlock() == CheeseBlocks.CHEESE_FIRE) {
        	event.setCanceled(true);
        	player.playSound(SoundEvents.BLOCK_FIRE_EXTINGUISH, 1.0F, 1.0F);
            world.setBlockToAir(pos);
        }
}

}

Classes: 94

Lines of code: 12173

Other files: 206

Github repo: https://github.com/KokkieBeer/DeGeweldigeMod

Posted

Do you override the

registerEventHandler

in your

ClientProxy

? If so, you should call the super method to make sure the event handler register gets called.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Posted
public class ClientProxy extends CommonProxy {

public void registerModels() {
	registerItemModel(CheeseItems.CHEESE, 0);
	registerItemModel(CheeseItems.CHEESE_COOKED, 0);
	registerItemModel(CheeseItems.BREAD_CHEESE, 0);
	registerItemModel(CheeseItems.CHEESE_APPLE, 0);
	registerItemModel(CheeseItems.CHEESE_BUCKET, 0);
	registerItemModel(CheeseItems.CHEESE_SEEDS, 0);

	registerItemModel(CheeseItems.CHEESE_INGOT, 0);
	registerItemModel(CheeseItems.CHEESE_ARROW, 0);

	registerItemModel(CheeseItems.CHEESE_SWORD, 0);
	registerItemModel(CheeseItems.CHEESE_PICKAXE, 0);
	registerItemModel(CheeseItems.CHEESE_AXE, 0);
	registerItemModel(CheeseItems.CHEESE_SHOVEL, 0);
	registerItemModel(CheeseItems.CHEESE_HOE, 0);
	registerItemModel(CheeseItems.CHEESE_FLY_STICK, 0);
	registerItemModel(CheeseItems.CHEESE_BOW, 0);
	registerItemModel(CheeseItems.CHEESE_MULTITOOL, 0);
	registerItemModel(CheeseItems.FLINT_AND_CHEESE, 0);

	registerItemModel(CheeseItems.CHEESE_HELMET, 0);
	registerItemModel(CheeseItems.CHEESE_CHESTPLATE, 0);
	registerItemModel(CheeseItems.CHEESE_LEGGINGS, 0);
	registerItemModel(CheeseItems.CHEESE_BOOTS, 0);

	registerItemModel(CheeseItems.CHEESE_PICKAXE_HEAD, 0);
	registerItemModel(CheeseItems.CHEESE_AXE_HEAD, 0);
	registerItemModel(CheeseItems.CHEESE_SHOVEL_HEAD, 0);

	registerBlockModel(CheeseBlocks.CHEESE_ORE, 0);
	registerBlockModel(CheeseBlocks.CHEESE_ORE_NETHER, 0);
	registerBlockModel(CheeseBlocks.CHEESE_ORE_END, 0);
	registerBlockModel(CheeseBlocks.CHEESE_BLOCK, 0);
	registerBlockModel(CheeseBlocks.QUICK_CHEESE, 0);
	registerBlockModel(CheeseBlocks.COMPLIMENT_MACHINE, 0);
	registerBlockModel(CheeseBlocks.BELGIUM_FLAG, 0);
	registerBlockModel(CheeseBlocks.CHEESE_PLANT, 0);
	registerBlockModel(CheeseBlocks.CHEESE_FURNACE, 0);
	registerBlockModel(CheeseBlocks.LIT_CHEESE_FURNACE, 0);
	registerBlockModel(CheeseBlocks.CHEESE_CRAFTING_TABLE, 0);
	registerBlockModel(CheeseBlocks.CHEESE_COOKIE_BLOCK, 0);
	registerBlockModel(CheeseBlocks.CHEESE_BOARD, 0);
	registerBlockModel(CheeseBlocks.CHEESE_GRASS, 0);
	registerBlockModel(CheeseBlocks.CHEESE_DIRT, 0);
	registerBlockModel(CheeseBlocks.CHEESE_GRASS_PATH, 0);
	registerBlockModel(CheeseBlocks.CHEESE_FARM_LAND, 0);
	registerBlockModel(CheeseBlocks.CHEESE_STAIRS, 0);
	registerBlockModel(CheeseBlocks.CHEESE_PORTAL, 0);
	registerBlockModel(CheeseBlocks.CHEESE_STONE, 0);
	registerBlockModel(CheeseBlocks.CHEESE_FIRE, 0);
}

public void registerEventHandler() {
	GameRegistry.registerTileEntity(TileEntityCheeseBoard.class, Reference.MODID + "TileEntityCheeseBoard");
	ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCheeseBoard.class, new RenderCheeseBoard());

	MinecraftForge.EVENT_BUS.register(new CheeseClientHandler());
}

public void setTitle(String title) {
	Display.setTitle(title);
}

public void renderEntities() {
	RenderingRegistry.registerEntityRenderingHandler(EntityCheeseCow.class, new RenderingHandlerCheeseCow());
	RenderingRegistry.registerEntityRenderingHandler(EntityCheeseArrow.class, new RenderingHandlerCheeseArrow());
	RenderingRegistry.registerEntityRenderingHandler(EntityCheeseBoss.class, new RenderingHandlerCheeseBoss());
	RenderingRegistry.registerEntityRenderingHandler(EntityCheeseBall.class, new RenderingHandlerCheeseBall());
}

private void registerItemModel(Item item, int meta) {
	ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(item.getRegistryName(), "inventory"));
}

private void registerBlockModel(Block block, int meta) {
	ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), meta, new ModelResourceLocation(block.getRegistryName(), "inventory"));
}
}

Classes: 94

Lines of code: 12173

Other files: 206

Github repo: https://github.com/KokkieBeer/DeGeweldigeMod

Posted

I don't override the methods

Then what is this?
public void registerEventHandler() {
GameRegistry.registerTileEntity(TileEntityCheeseBoard.class, Reference.MODID + "TileEntityCheeseBoard");
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCheeseBoard.class, new RenderCheeseBoard());

MinecraftForge.EVENT_BUS.register(new CheeseClientHandler());
}

Do you override the

registerEventHandler

in your

ClientProxy

? If so, you should call the super method to make sure the event handler register gets called.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Posted

OOOOHHWWW you mean that, sorry

It works now but it gets fired 2 times, and yes I did do it only if it was the main-hand

	@SubscribeEvent
public void playerInteract(LeftClickBlock event) {
	EnumHand hand = event.getHand();
	BlockPos pos = event.getPos();
	World world = event.getWorld();
	EntityPlayer player = event.getEntityPlayer();
	pos = pos.offset(event.getFace());

        if (world.getBlockState(pos).getBlock() == CheeseBlocks.CHEESE_FIRE && hand == EnumHand.MAIN_HAND) {
        	event.setCanceled(true);
        	world.playSound(player, pos, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 1.0F, 1.5F);
            world.setBlockToAir(pos);
        }
}

Classes: 94

Lines of code: 12173

Other files: 206

Github repo: https://github.com/KokkieBeer/DeGeweldigeMod

Posted

OOOOHHWWW you mean that, sorry

It works now but it gets fired 2 times, and yes I did do it only if it was the main-hand

	@SubscribeEvent
public void playerInteract(LeftClickBlock event) {
	EnumHand hand = event.getHand();
	BlockPos pos = event.getPos();
	World world = event.getWorld();
	EntityPlayer player = event.getEntityPlayer();
	pos = pos.offset(event.getFace());

        if (world.getBlockState(pos).getBlock() == CheeseBlocks.CHEESE_FIRE && hand == EnumHand.MAIN_HAND) {
        	event.setCanceled(true);
        	world.playSound(player, pos, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 1.0F, 1.5F);
            world.setBlockToAir(pos);
        }
}

It is getting called on both client and server side.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Posted

OOOOHHWWW you mean that, sorry

What else would I mean with overriding?

It works now but it gets fired 2 times, and yes I did do it only if it was the main-hand

Once on the client and once on the server side. Check if your on the server side, than do your code.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Posted

What else would I mean with overriding?

I thought you ment if I was using an @Override annotation, but... My head is dumb some times
Once on the client and once on the server side. Check if your on the server side, than do your code.

	@SubscribeEvent
public void playerInteract(LeftClickBlock event) {
	EnumHand hand = event.getHand();
	BlockPos pos = event.getPos();
	World world = event.getWorld();
	EntityPlayer player = event.getEntityPlayer();
	pos = pos.offset(event.getFace());
        if (world.getBlockState(pos).getBlock() == CheeseBlocks.CHEESE_FIRE && hand == EnumHand.MAIN_HAND) {
        	event.setCanceled(true);
        	if(world.isRemote)
        	world.playSound(player, pos, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 0.8F, 1.5F);
        	if(!world.isRemote)
            world.setBlockToAir(pos);
        }
}

Classes: 94

Lines of code: 12173

Other files: 206

Github repo: https://github.com/KokkieBeer/DeGeweldigeMod

Guest
This topic is now closed to further replies.

Announcements



×
×
  • Create New...

Important Information

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