Pam's HarvestCraft

Pam's HarvestCraft

87M Downloads

[Bug] The balance with harvestcraft foodstuff and vanilla breaks cow and sheep breeding.

Liberage opened this issue ยท 4 comments

commented

If "B:enablevanillafoodBalance=<---->" in the config file is set to true, cows and sheep won't breed.

commented

Need crash-report and latest log files.

commented

I have same problem, the game dont crash, and the log files dont show any error.

commented

I think you forgot hable the breeding to cows and sheep.

HarvestCraft 1.12.1b

  • Fixed: Carrots and Potatoes can be planted again
  • Fixed: Carrots, Potatoes, Beetroots can be used for Pig breeding again
  • Fixed: Meats are listed under their correct Ore Dictionary labels again
  • Fixed: Replaced Vanilla Food items now all have names
  • Fixed: Fix all tile entities not properly overriding getUpdateTag (thanks covers1624)
  • Fixed: Woven Cotton now has a recipe (2 string = 1 woven cotton)
  • Added: Breeding: Pigs can now be bred with listAllveggie items (thanks gegy1000)
  • Added: Breeding: Chickens can now be bred with listAllseed items (thanks gegy1000)
  • Added: You can now right-click harvest Netherwarts (thanks GiantTreeLP)
commented

I find this, in main/java/com/harvestcraft/proxy/CommonProxy.java

public void postInit(FMLPostInitializationEvent e) {
             Set<Item> temptationItems = ObfuscationReflectionHelper.getPrivateValue(EntityPig.class, null, "TEMPTATION_ITEMS", "field_184764_bw");
            temptationItems.add(ItemRegistry.harvestcarrotItem);
	    temptationItems.add(ItemRegistry.harvestpotatoItem);
	    temptationItems.add(ItemRegistry.harvestbeetItem);
	    for (ItemStack stack : OreDictionary.getOres("listAllveggie")) {
	        temptationItems.add(stack.getItem());
	    }
	    Set<Item> temptationItems2 = ObfuscationReflectionHelper.getPrivateValue(EntityChicken.class, null, "TEMPTATION_ITEMS", "field_184761_bD");
	    for (ItemStack stack : OreDictionary.getOres("listAllseed")) {
	        temptationItems2.add(stack.getItem());
	    }
    }

In this method, set only breed for Pig and Chicken.

And here

public void onBlocksAndItemsLoaded() {
        HarvestCraft.config.configureGardenDrops();

        

        RecipeRegistry.registerRecipes();
        SeedDropRegistry.getSeedDrops();

        MarketItems.registerItems();
        ShippingBinItems.registerItems();
        PacketHandler.init();

        GameRegistry.registerTileEntity(TileEntityApiary.class, "PamApiary");
        GameRegistry.registerTileEntity(TileEntityMarket.class, "PamMarket");
        GameRegistry.registerTileEntity(TileEntityShippingBin.class, "PamShippingbin");
        GameRegistry.registerTileEntity(TileEntityPresser.class, "PamPresser");
        GameRegistry.registerTileEntity(TileEntityGroundTrap.class, "PamGroundTrap");
        GameRegistry.registerTileEntity(TileEntityWaterTrap.class, "PamWaterTrap");
        GameRegistry.registerTileEntity(TileEntityWaterFilter.class, "PamWaterFilter");
        GameRegistry.registerTileEntity(TileEntityGrinder.class, "PamGrinder");
        
        if (ConfigHandler.enableHCFish)
        {
        MinecraftForge.EVENT_BUS.register(new LootTableLoadEventHandler());
        }
        
        RightClickHarvesting.instance.register();
        
        //MinecraftForge.EVENT_BUS.register(new AnimalBreedingEvent());
        
        GameRegistry.registerFuelHandler(new HarvestCraftFuelHandler());
        
    }

The line
//MinecraftForge.EVENT_BUS.register(new AnimalBreedingEvent());
is commented, and here is where breed for cow and sheep is registered

public class AnimalBreedingEvent {

	@SubscribeEvent
	public void onInteraction(PlayerInteractEvent.EntityInteract event) {
		Set<Item> breedItems = OreDictionary.getOres("listAllgrain").stream().map(ItemStack::getItem).collect(Collectors.toSet());
		
		if (event.getEntity() instanceof EntityCow) {
	        handleBreedItem((EntityCow) event.getEntity(), breedItems, event.getEntityPlayer(), event.getHand());
	    } else if (event.getEntity() instanceof EntitySheep) {
	        handleBreedItem((EntityCow) event.getEntity(), breedItems, event.getEntityPlayer(), event.getHand());
	    }
	}

	private void handleBreedItem(EntityAnimal entity, Set<Item> breedItems, EntityPlayer player, EnumHand hand) {
		ItemStack itemstack = player.getHeldItem(hand);

        if (!itemstack.isEmpty())
        {
        	int inLove = ReflectionHelper.getPrivateValue(EntityAnimal.class, entity, "inLove", "field_70881_d");
            if (breedItems.contains(itemstack.getItem()) && entity.getGrowingAge() == 0 && inLove <= 0)
            {
            	itemstack.shrink(1);
            	entity.setInLove(player);
            }

            if (entity.isChild() && entity.isBreedingItem(itemstack))
            {
            	itemstack.shrink(1);
            	entity.ageUp((int)((float)(-entity.getGrowingAge() / 20) * 0.1F), true);
            }
        }
	}
}